1、SpringData 简介
2、整合SpringData JPA
-
导入依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
-
连接数据库,使用 application.yml
spring:
datasource:
username: root
password: 123
#?serverTimezone=UTC解决时区的报错
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
- 编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;
/**
* @author tyh
* @create 2020-09-11 15:13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
//使用JPA注解配置映射关系
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
//@Table(name = "user") //@Table来指定和那个数据表对应;如果省略默认表名就是user
public class User {
@Id //这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //主键自增
private Integer id;
@Column//(name = "user_name",length = 50) //这是和数据表对应的一个列
private String userName;
@Column //默认列名就是属性名
private String pwd;
}
- 编写一个Dao接口来操作实体类对应的数据表(Repository)
//继承JpaRepository来完成对数据库的操作
public interface UserRepository extends JpaRepository<User,Integer> {
}
- 使用application.yml 去配置JpaProperties
spring:
datasource:
username: root
password: 123
#?serverTimezone=UTC解决时区的报错
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
# 更新或者创建数据表结构
ddl-auto: update
# 控制台显示sql
show-sql: true
- 编写一个controller去测试一下
/**
* @author tyh
* @create 2020-09-13 9:46
*/
@RestController
public class UserController {
@Autowired
UserRepository userRepository;
//localhost:8080/use/1
@GetMapping("/user/{id}") //根据id查询数据
public Optional<User> getUser(@PathVariable("id") Integer id){
Optional<User> user = userRepository.findById(id);
return user;
}
//localhost:8080/user?userName=张三&pwd=555
@RequestMapping("/user") //添加数据
public User insertUser(User user){
User save = userRepository.save(user);
return save;
}
}
- 效果