1) 引入jar包支持
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-data-jpa</artifactId> 4 </dependency> 5 6 <!-- 数据库支持 --> 7 <dependency> 8 <groupId>mysql</groupId> 9 <artifactId>mysql-connector-java</artifactId> 10 </dependency>
2)数据库表
3)java实体
注意,框架本身并不能识别转换驼峰和下划线,必须使用注解 @Column(name = "user_id") 映射出正确的字段名
别忘了再类头上加上注解 @Table(name = "user") 指定数据库名称
1 @Entity 2 @Table(name = "user") 3 public class UserModel { 4 @Id 5 @GeneratedValue(strategy= GenerationType.IDENTITY) 6 @Column(name = "user_id") 7 private Integer userId ; 8 9 @Column(name = "user_name") 10 private String userName ; 11 12 private Integer age ; 13 // get set 略 14 }
4 ) 生成 DAO 层接口
注意此时生成的是 dao 接口并不是 类。 在继承了框架提供的 接口 JpaRepository< 实体名 , 主键类型 > , JpaSpecificationExecutor< 实体名 >, Serializable 后
所有简单的 CRUD 都可以调用父接口中的方法, 此时 简单的CRUD 已经可以实现 , 具体见下文 service 层
PS。接口中有自定义方法 findUserByUserName() 方法在下文说明。
public interface UserJpa extends JpaRepository<UserModel, Integer> , JpaSpecificationExecutor<UserModel>, Serializable{ UserModel findUserByUserName(String userName); }
5 ) service 层 对dao层的调用
1 /** 2 * 3 * @作者 陈先生 4 * @创建时间 2018年7月17日 5 * @功能描述 user service层 6 */ 7 @Service 8 public class UserService { 9 10 @Autowired 11 private UserJpa userJpa; 12 13 public UserModel getUserModel(Integer id) { 14 return userJpa.findById(id).get(); 15 } 16 17 public UserModel saveUserModel(UserModel user) { 18 return userJpa.saveAndFlush(user); 19 } 20 21 public String delUserById(Integer id) { 22 23 userJpa.deleteById(id); 24 return "delete model success"; 25 } 26 27 public UserModel findUserByName(String userName) { 28 29 return userJpa.findUserByUserName(userName); 30 } 31 32 33 }
根据以上步奏,已经可以简单实现对数据库的简单crud操作。
-----------------------------------------------------------------------------------------------------------------------------------
条件查询 接口中只默认给出了 根据ID 主键来做条件查询,代码jpa层 添加了自定义方法findUserByUserName() .。 在调用的时候也可以直接
调用不需要实现, 详解见后文。