SpringBoot整合springDataJPA
一.SpringBootData JPA介绍
SpringData:其实SpringData就是Spring提供了一个操作数据的框架。而SpringData JPA只是SpringData框架下的一个基于JPA标准操作数据的模块。
SpringData JPA:基于JPA的标准数据进行操作。简化操作持久层的代码。只需要编写接口就可以
二.基本配置
1.引入依赖
我们可以直接在创建项目时,勾选上spring初始化向导
然后选中需要的模块
2.配置文件
在application.properties
或者application.yml
中配置进行配置
spring: datasource: username: root password: root driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/db3?serverTimezone=UTC type: com.alibaba.druid.pool.DruidDataSource # 数据源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true jpa:hibernate: ddl-auto: updateshow-sql: true
注意:
- 这里使用的是Druid数据源,使用时需要在pom.xml中导入相关依赖
<!-- 引入druid数据源--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.18</version></dependency>
- 这里由于版本问题,在url地址地方需要加上serverTimezone属性
url: jdbc:mysql://localhost:3306/db3?serverTimezone=UTC
jpa:hibernate: ddl-auto: update//表示自动为我们在数据库中创建表(并更改)show-sql: true(在控制台打印sql语句)
三.JPA使用
1.创建Entity实体类
@Entity@Tablepublic class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;@Column(length = 50)private String lastName;@Columnprivate String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}
注意
1.这里所有的注解都是javax.persistence下的,不要导错包了
注解的解释
- @Entity注解:告诉JPA这是一个实体类(和数据表映射的类)也就是一一对应
- @Table:来指定和哪个数据表对应;如果省略默认表名就是user;
- @Id:指明该属性为主键
- @GeneratedValue(strategy = GenerationType.IDENTITY:表名自动增长
- @colume:这是和数据表对应的一个列,省略默认列名就是属性名
2.编写一个Dao接口来操作实体类对应的数据表(Repository)
public interface UserRepository extends JpaRepository<User,Integer> {}
这里只需要实现JpaRepository接口即可,不需要添加注解
3.创建controller测试
@RestControllerpublic class UserController {@AutowiredUserRepository userRepository;@GetMapping("/user/{id}")public User getUser(@PathVariable("id") Integer id){User user = userRepository.getOne(id);return user;}@GetMapping("/user")public User insertUser(User user){User user1 = userRepository.save(user);return user1;}}