EntityManager的使用
1、最基础的查询
CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<User> cq = cb.createQuery(User.class); Root<User> root = cq.from(User.class); //from User cq.select(root); //select * from User javax.persistence.criteria.Predicate pre = cb.equal(root.get("id").as(Integer.class),id);//id=1 cq.where(pre);//where id=1 Query query = entityManager.createQuery(cq);//select u from User u where u.id = 1 System.out.println(query.getResultList());
2、spring data jpa 的 toPredicate 方法
public Predicate toPredicate(Root<RoleEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {List<Predicate> list = new ArrayList<Predicate>();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 + "%"))));}// 角色idif (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));}//多角色Idif (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<T> findAll(Specification<T> spec) {return getQuery(spec, (Sort) null).getResultList(); }protected TypedQuery<T> getQuery(Specification<T> spec, Sort sort) {CriteriaBuilder builder = em.getCriteriaBuilder();CriteriaQuery<T> query = builder.createQuery(getDomainClass());Root<T> root = applySpecificationToCriteria(spec, query);query.select(root);if (sort != null) {query.orderBy(toOrders(sort, root, builder));}return applyRepositoryMethodMetadata(em.createQuery(query)); }private TypedQuery<T> applyRepositoryMethodMetadata(TypedQuery<T> query) {if (metadata == null) {return query;}LockModeType type = metadata.getLockModeType();TypedQuery<T> toReturn = type == null ? query : query.setLockMode(type);applyQueryHints(toReturn);return toReturn; }
转载于:https://www.cnblogs.com/hujunzheng/p/6656178.html
EntityManager的使用相关推荐
- java 清空一个list数据库_java – JPA EntityManager删除数据库中的所有记录
我有一个插入我的数据库的Servlet.这工作正常.第二个Servlet显示第一个插入的内容,但每当我运行显示的Servlet时,我所有表中的所有记录都将被删除!我的JPA实现是 EclipseLin ...
- SpringDataJpa使用原生sql(EntityManager)动态拼接,分页查询
SpringDataJpa Spring Data JPA是较大的Spring Data系列的一部分,可轻松实现基于JPA的存储库.该模块处理对基于JPA的数据访问层的增强支持.它使构建使用数据访问技 ...
- EntityManager:seam新手必读(二)
一旦entity数据有所改变,将反映到数据库中.不能确认EntityManager何时会向数据库写入更新的数据.但是这一事件肯定会发生,一般是马上,但不会晚于EntityManager消失;) ...
- JPA的entityManager的find、getReference、persisit、remove方法的使用
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- JPA的entityManager的find方法与getReference方法的区别
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- springboot使用EntityManager执行自定义SQL
1.在代码中注入 EntityManager import javax.persistence.EntityManager;@Autowired EntityManager entityManager ...
- springboot多数据源使用EntityManager
entityManagerFactorySecondary指的是springboot项目中的第二个数据源,此处表示导入第二个数据源的实体管理器 @PersistenceContext(unitName ...
- JPA EntityManager详解
JPA EntityManager详解 1. 持久化上下文(Persistence Context) Ø 一个持久化单元(Persistence Unit)就是关于一组Entity类的命名配置.持 ...
- Activiti源码 之 DataManager EntityManager
by yan 20211223 阅读了Activiti 相关源码,记录下对DataManager & EntityManager的理解. DataManager 是一层相对底层的抽象,主要负责 ...
- entitymanager_实体管理器的类型:应用程序管理的EntityManager
entitymanager JPA规范定义了几种类型的EntityManagers / Persistence Context. 我们可以有: 扩展和事务范围的EntityManager, 容器管理或 ...
最新文章
- [VBScript] 自动删除2小时以前生成的文件
- HDU 5729 Rigid Frameworks(连通性DP)
- jenkins 手动执行_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...
- 添加轨迹运动_时间最优轨迹(资料)
- BZOJ4771 七彩树(dfs序+树上差分+主席树)
- 前端学习(16):跳转链接小练习
- 抢车位app下载_太方便了!有了这个APP,找车位再也不用“兜圈子”了
- 五行塔怎么吃第五个_中医美容——“五行美容养颜法”,善用五行,女人会越来越漂亮...
- 我要带徒弟学JAVA架构 ( 写架构,非用架构 )
- Linux操作系统的软件安装方法 — IT…
- 一个简单的互斥量与条件变量例子
- C# 语言规范_版本5.0 (第15章 委托)
- Springboot毕设项目基于springboot的小区旧物交易系统的设计与实现j8o94java+VUE+Mybatis+Maven+Mysql+sprnig)
- 陌陌探探真人头像过网图,探探真实头像蓝V怎么弄?
- C# ABB机器人上位机控制 .net PC SDK开发全流程(通信、控制、日志、二次开发)--Chapter 1
- 工地物资出入库管理软件系统
- unity识别图片颜色并把颜色数量排序
- Python高级教程
- 【利用Python进行数据分析——经验篇2】计算微博转发/评论/点赞h指数的Python代码
- 下载Nvidia显卡以前的驱动
热门文章
- 有乳胶枕吗_小耳朵猪、黑木耳面条、乳胶枕……吃喝玩乐穿用样样都有!松江这个展销会,你去了吗?...
- Ant-Design-Vue 安装
- SpringBoot2 集成 xxl-job任务调度中心
- JMeter实现web接口测试实践举例
- Docker实战(精简版本)
- 工作簿长时间空闲时自动关闭
- Java-变量、常量
- python中is和 的区别_Python中is和==的区别
- python遗传算法计算实例_遗传算法python简单例子(详解)
- BugkuCTF-Crypto题贝斯家