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

目录

前言

一、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.实体类

@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.仓储类

@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.多个字段组合查询

@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.数据更新

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

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

8.服务类

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

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

9.其他注意

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

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

jpa:
    hibernate:
      ddl-auto: validate

三、总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值