参考资料
https://spring.io/projects/spring-data-jpa
介绍
Spring Data JPA 是 Spring 基于 ORM(Object Relational Mapping) 框架、JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 JPA 技术实现,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率。
查询操作
1、jpql 查询,也可以通过 :参数名字 + param 注解代替 ?
@Query(" from User as u where u.username = ?1")
List<User> findByUsername(String username);
2、规定方法明查询,按照 JPA 关键词命名方法名即可。
User findByNameAndAge(String name, int age);
3、Query By Example 查询,只支持字符串的操作。
User user = new User();
user.setId(id);
Example<User> userExample = Example.of(user);
userRepository.findOne(userExample).orElse(null);
4、Querydsl 查询。
QBlogInfo qBlogInfo = QBlogInfo.blogInfo;
queryFactory.select(qBlogInfo)
.from(qBlogInfo)
.where(qBlogInfo.id.eq(1)) 相当于 select * from blog_Info where id = 1;
5、Specification 查询
public void queryUserInfo (String userCode, String sex) {
List<UserInfo> userList = = repository.findAll((Specification<UserInfo>) (r, q, b) -> {
List<Predicate> predicates = new ArrayList<>();
if (StringUtils.isNotBlank(userCode)) {
//equal等于
predicates.add(b.equal(r.get("userCode"), userCode));
}
if (StringUtils.isNotBlank(sex)) {
//notEqual不等于
predicates.add(b.notEqual(r.get("sex"), sex));
}
//isNotNull非空
predicates.add(b.isNotNull(r.get("id")));
//isNull空
predicates.add(b.isNull(r.get("nikeName")));
return b.and(predicates.toArray(new Predicate[0]));
});
}
关联操作
1、@OneToOne 注解可以实现一对一操作,例如关联查询和关联删除。
2、@OneToMany 注解可以实现一对多操作,例如关联查询和关联删除。
乐观锁
想要实现乐观锁可以通过 @Version 注解标注在某个字段上。其支持的类型有如下四种,int,short,long,TimeStamp。
标签:Java,进阶,userCode,SpringJPA,JPA,get,查询,add,predicates From: https://www.cnblogs.com/feiqiangsheng/p/17436319.html