整合JPA
使用Spring Boot框架做开发时,除了选择Mybatis作为ORM框架访问数据库,还可以选择另一款优秀的ORM框架Hibernate来访问数据库。我们可以使用Spring Data提供的JPA规范来使用Hibernate,JPA的底层默认实现就是Hibernate。
导入依赖
使用Hibernate框架,需要导入spring-boot-starter-data-jpa依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
配置文件
在使用Hibernate框架之前,首先要配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/test_db?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: 12345
driver-class-name: com.mysql.cj.jdbc.Driver
然后配置jpa下的hibernate的配置,比如以下配置设置了数据表的自动创建和后台打印sql语句
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
创建实体类
编写对应数据表的实体类,需要以下几个注解:
- @Entity:标注该类为实体类
- @Table:设置数据表的名字
- @Id:设置该属性为数据表的主键
- @GeneratedValue:设置主键生成策略
- @Column:设置属性对应的列的名字,不标注则用属性的名字
@Data
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@Column(name = "nik_name")
private String nikName;
private int age;
private String address;
}
创建完实体类,如果此时启动项目,由于设置了spring.jpa.hibernate.ddl-autoHibernate
属性为自动创建数据表,Hibernate会检查是否有对应的数据表,如果无则自动创建
查看数据库,对应的表已经被创建
操作数据
不同于Mybatis框架,Hibernate时一款全自动框架,他封装了许多方法,直接调用方法可以对数据进行增删改查操作,无需编写sql语句,这和Mybatis-Plus相似
创建Dao接口,继承JpaRepository
接口,这个接口有两个泛型,分别传入对应的实体类的类型和主键的类型,JpaRepository
接口会被Spring扫描为Bean,所以无需再标注@Repository
注解
public interface PersonRepository extends JpaRepository<Person, Integer> {
}
注入自定义Dao接口,编写两个接口来测试,分别是按id查询和新增
@RestController
public class MyController {
@Autowired
PersonRepository personRepository;
@RequestMapping("/query/{id}")
public Person queryPerson(@PathVariable("id") int id) {
Optional<Person> result = personRepository.findById(id);
return result.orElse(null);
}
@RequestMapping("/add")
public Person addPerson(Person person) {
return personRepository.save(person);
}
}
可以正常访问数据库
并且在后台打印了对应的Sql语句