博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EntityManager的使用
阅读量:7207 次
发布时间:2019-06-29

本文共 2813 字,大约阅读时间需要 9 分钟。

v1、最基础的查询

CriteriaBuilder cb = entityManager.getCriteriaBuilder();CriteriaQuery
cq = cb.createQuery(User.class);Root
root = cq.from(User.class); //from Usercq.select(root); //select * from Userjavax.persistence.criteria.Predicate pre = cb.equal(root.get("id").as(Integer.class),id);//id=1cq.where(pre);//where id=1Query query = entityManager.createQuery(cq);//select u from User u where u.id = 1System.out.println(query.getResultList());

v2、spring data jpa 的 toPredicate 方法

public Predicate toPredicate(Root
root, CriteriaQuery
query, CriteriaBuilder cb) { List
list = new ArrayList
(); list.add(cb.equal(root.get("dr").as(Integer.class), delete)); if (StringUtils.isNotBlank(searchParam)) {
/*searchParam 为传递参数*/ list.add(cb.or(cb.like(root.get("roleName").as(String.class), cb.literal("%" + searchParam + "%")), cb.like(root.get("roleCode").as(String.class), cb.literal("%" + searchParam + "%")))); } // 角色id if (roleId != null && !("".equals(roleId.trim()))) { list.add(cb.equal(root.get("id").as(String.class), roleId)); } // 管理员角色标识 if (category != null && category > 0) { list.add(cb.equal(root.get("category").as(Integer.class), category)); } //多角色Id if (roleids != null && roleids.size() > 0) { list.add(root.get("id").as(String.class).in(roleids)); } Predicate[] predicates = new Predicate[list.size()]; query.where(list.toArray(predicates)); query.orderBy(cb.asc(root.get("roleType").as(String.class)), cb.asc(root.get("roleProperty").as(String.class)), cb.asc(root.get("roleCode").as(String.class))); return query.getRestriction();}

 

  参考 org.springframework.data.jpa.repository.support.SimpleJpaRepository 的 findAll方法,如下

public List
findAll(Specification
spec) { return getQuery(spec, (Sort) null).getResultList();}protected TypedQuery
getQuery(Specification
spec, Sort sort) { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery
query = builder.createQuery(getDomainClass()); Root
root = applySpecificationToCriteria(spec, query); query.select(root); if (sort != null) { query.orderBy(toOrders(sort, root, builder)); } return applyRepositoryMethodMetadata(em.createQuery(query));}private TypedQuery
applyRepositoryMethodMetadata(TypedQuery
query) { if (metadata == null) { return query; } LockModeType type = metadata.getLockModeType(); TypedQuery
toReturn = type == null ? query : query.setLockMode(type); applyQueryHints(toReturn); return toReturn;}
本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/6656178.html,如需转载请自行联系原作者
你可能感兴趣的文章
Google Maps Android API v2 (2)- 地图对象
查看>>
MySQL 5.5 手册下载
查看>>
hdu 1300(dp)
查看>>
POJ 1159 - Palindrome 优化空间LCS
查看>>
CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)
查看>>
N!末尾有多少个零
查看>>
【优先队列】HDU 1873——看病找医生
查看>>
SQL 时间处理
查看>>
HF Reader
查看>>
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
查看>>
Css 常用属性
查看>>
GRIDVIEW多行多列合并单元格(合并列)
查看>>
sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)...
查看>>
java final
查看>>
【吐槽】VS2012的安装项目只能用InstallShield Limited Edition
查看>>
win7重装系统时,使用PE工具箱进入系统看到的“C盘变成0.2G,D盘变成48G左右”这是什么回事?...
查看>>
JQuery URL的GET参数值获取方法
查看>>
关于Char* ,CString ,WCHAR*之间的转换问题
查看>>
第十二天--Property List和NSUserDefaults
查看>>
JS Bin Tips and Bits • About
查看>>