Java入门第02篇之数据库操作相关

news/2024/9/19 8:45:34 标签: java, 数据库, JPA

目录

前言

一、JPA是什么?

二、使用步骤

1.开发环境说明

2.引入依赖

3.配置数据库连接

4.实体类

5.仓储类

6.多个字段组合查询

7.数据更新

8.服务类

9.其他注意

三、总结


前言

项目上最近遇到了需要数据同步的地方,已有项目代码是Java开发,于是可以继续用Java代码去实现数据同步,即使用Java去操作MySQL数据库。借此机会,正好整理下Java数据库操作开发内容。

我其实也不想写SQL直接操作数据库,那么就需要用到实体类。

基于如上需求,找AI问了下,给我推荐JPA,于是后续操作都是基于JPA实现。


一、JPA是什么?

JPA是Java Persistence API的缩写,是Java EE平台下用于对象持久化的一种标准规范。它提供了一系列方法和接口,使开发人员能够将Java对象映射到关系数据库中,并且能够对数据库进行增删改查操作。

通过使用JPA,开发人员可以更加方便地操作数据库,减少了开发和维护的工作量。JPA还支持面向对象的编程,提供了对关系数据库的对象化操作,使得开发人员能够以面向对象的方式组织和操作数据。

二、使用步骤

1.开发环境说明

我这里使用的是IntelliJ+maven

2.引入依赖

pom.xml添加mysql驱动、jpa

<!-- Spring Boot Starter Data JPA -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- MySQL Driver -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version> <!-- 请使用适合您项目的版本号 -->
    <scope>runtime</scope>
</dependency>

3.配置数据库连接

application.yml

spring:
  datasource:
    url: jdbc:mysql://192.168.1.100:3036/sysdb?useSSL=false&serverTimezone=UTC
    username: root
    password: test1234
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: true

4.实体类

java">@Entity
@Table(name = "user_info")
public class userInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userId;

    @Setter
    @Getter
    @Column(length = 128)
    private String name;

    @Setter
    @Getter
    @Column(length = 128)
    private String code;

    @Setter
    @Getter
    @Column(length = 1024)
    private String password;

    @Setter
    @Getter
    @Column(length = 64)
    private String mobile;

    @Setter
    @Getter
    @Column(length = 128)
    private String email;

    @Setter
    @Getter
    private LocalDateTime create_time;

}

 相关规则说明:

1)mysql数据表命名规则一般是单词小写下划线分割,如user_info

2)实体类、字段命名则是userInfo、userId,JPA框架会自动解析为user_info、user_id去对应数据库表名、字段名,当然也可以通过给类、字段设置name属性指定实际的数据库表名、字段名

5.仓储类

java">@Repository
public interface UserRepository extends JpaRepository<userInfo, Long> {

    userInfo findByUserId(String userId);

}

一个实体类会对应一个仓储类,用于数据操作的实现

如上findByUserId方法,也是JPA内置规则,findBy后的UserId,对应的userInfo类的userId字段,然后再对应到userId字段的数据库字段(user_id)

内置方法:

获取所有数据:userRepository.findAll();

按id查询数据:userRepository.findById(String id);

6.多个字段组合查询

java">@Query("SELECT u FROM userInfo u WHERE u.code = :code AND u.name = :name")
List<userInfo> findByCodeAndName(@Param("code") String code, @Param("name") String name);

如上,是要对用户表按照code和name一起AND查询,Query中SQL,userInfo即实体类名,u.code和u.name均为实体类字段名,然后再通过类名、字段名映射到数据表名、字段名,最终对应到实际数据的查询SQL。

7.数据更新

java">userInfo user=new userInfo();
// 相关赋值操作
userRepository.save(user);

如果涉及事务操作,则在方法上增加@Transactional

8.服务类

一般我们的业务会写在服务类,然后服务类根据业务需要调用仓储类的数据操作

而具体业务前端或webapi则直接调用服务类具体方法

9.其他注意

一开始部署到服务器发现,自动更新了已有数据表结构

后来查询发现,这个是可以配置的,安全起见在生产环境不要设置为自动额更新数据结构,完整配置见3.配置数据库连接

jpa:
    hibernate:
      ddl-auto: validate

三、总结

以上就是今天讲的关于java中使用JPA进行数据库操作相关的内容,希望可以帮助刚好也需要入门的小伙伴们,我们一起进步。


http://www.niftyadmin.cn/n/5665279.html

相关文章

neo4j:ubuntu环境下的安装与使用

一、neo4j安装 1. 下载安装包 进入网站&#xff1a;https://neo4j.com/deployment-center/#community 在上图中选择下载即可&#xff08;社区版免费&#xff09; 注意&#xff1a;neo4j的版本要和电脑安装的jdk版本对应&#xff0c;jdk版本使用java --version查看&#xff1a;…

“更上几层楼”的编程软件

在日益繁忙的工作环境中&#xff0c;选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度&#xff0c;甚至让团队协作更加顺畅。那么&#xff0c;哪款编程工具让你的工作效率翻倍&#xff1f;是智能的代码编辑器…

代理模式---静态代理和动态代理

代理模式 代理模式&#xff1a;给某一个对象提供一个代理&#xff0c;并由代理对象来控制对真实对象的访问。代理模式是一种结构型设计模式。 代理模式角色分为 3 种&#xff1a; Subject&#xff08;抽象主题角色&#xff09;&#xff1a;定义代理类和真实主题的公共对外方法…

2024短剧系统开发,付费短剧小程序app源码教程,分销功能讲解搭建上线

短剧系统技术栈 前端&#xff1a;vue3uniapp 后端&#xff1a; php 数据库&#xff1a;mysql 服务器环境&#xff1a; centos7.6 宝塔 php7.4 MySQL5.7 一、短剧系统功能 短剧用户端&#xff1a; 小程序、抖音小程序、快手小程序、APP、 z付宝小程序 系统用户端详细功能&…

基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图

目录 1. 项目结构 2. Maven依赖配置 (pom.xml) 3. 实现后端服务 4. 配置文件 (application.properties) 5. 启动项目 6. 访问页面 实现基于北斗卫星的车辆定位和轨迹图的Maven工程&#xff08;使用模拟数据&#xff09;&#xff0c;我们将使用以下技术&#xff1a; Spri…

【机器学习】任务五:葡萄酒和鸢尾花数据集分类任务

目录 1.实验基础知识 1.1 集成学习 &#xff08;1&#xff09;随机森林 &#xff08;2&#xff09;梯度提升决策树&#xff08;GBDT&#xff09; &#xff08;3&#xff09;XGBoost &#xff08;4&#xff09;LightGBM 1.2 参数优化 &#xff08;1&#xff09;网格搜索…

Docker Registry API best practice 【Docker Registry API 最佳实践】

文章目录 1. 安装 docker2. 配置 docker4. 配置域名解析5. 部署 registry6. Registry API 管理7. 批量清理镜像8. 其他 &#x1f44b; 这篇文章内容&#xff1a;实现shell 脚本批量清理docker registry的镜像。 &#x1f514;&#xff1a;你可以在这里阅读&#xff1a;https:/…

python学习笔记目录

基于windows下docker安装HDDM-CSDN博客 在python中安装HDDM-CSDN博客&#xff08;这个办法没安装成功&#xff09;