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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531267.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531267.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531267.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jackson序列化實例

參考文章 Jackson使用ContextualSerializer在序列化時獲取字段注解的屬性 使用BeanSerializerModifier定制jackson的自定義序列化(null值的處理) 關于使用ContextualSerializer的補充 BeanSerializerFactory中有如下代碼&#xff0c; 關于設置SerializerModifier&#xff0c;如…

maven自定義腳手架(快速生成項目)

Maven之自定義archetype生成項目骨架 利用腳手架生成 新項目 命令行方式 mvn archetype:generate \ -DarchetypeGroupIdcom.xxx \ -DarchetypeArtifactIdarchetype-spring-boot \ -DarchetypeVersion1.0.0 \ -DgroupIdcom.xxx \ -DartifactIddemo-archetype-generate \ -Dversi…

JSONObject 自定義過濾配置

一、自定義過濾器說明 PropertyPreFilter 根據PropertyName判斷是否序列化   PropertyFilter 根據PropertyName和PropertyValue來判斷是否序列化   NameFilter 修改Key&#xff0c;如果需要修改Key,process返回值則可   ValueFilter 修改Value   BeforeFilter 序列化時…

springmvc防止重復提交攔截器

一、攔截器實現&#xff0c;ResubmitInterceptorHandler.java import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.Hand…

Mac idea 快捷鍵

Mac鍵盤符號和修飾鍵說明 ? Command? Shift? Option? Control?? Return/Enter? Delete? 向前刪除鍵&#xff08;FnDelete&#xff09;↑ 上箭頭↓ 下箭頭← 左箭頭→ 右箭頭? Page Up&#xff08;Fn↑&#xff09;? Page Down&#xff08;Fn↓&#xff09;Home Fn ←…

cas4.2.7實現單點登錄

準備前參考&#xff1a;  cas server下載地址 cas client 下載地址 安全cookie setSecure詳解 Spring通過構造方法注入的四種方式 cas 學習博文 自定義登錄頁和登錄認證 cas server端的login-webflow詳細流程 CAS服務端自定義數據庫認證用戶 準備工作 1. cas server下載之后解…

log4j之log4j2.xml使用

依賴jar包 log4j-api-2.6.2.jar log4j-core-2.6.2.jar log4j-slf4j-impl-2.6.2.jar slf4j-api-1.7.12.jar 在resources目錄下新建log4j2.xml&#xff0c;內容如下。 <?xml version"1.0" encoding"UTF-8"?><!--status : 這個用于設置log4j2自身內…

cas4.2.7與shiro進行整合

準備工作 cas單點登錄開始前準備&#xff0c;請參考cas4.2.7實現單點登錄。 與shiro進行整合 注&#xff1a;準備工作的基礎上&#xff0c;對cas客戶端進行如下改進。 引入相關jar包 shiro-cas-1.2.6.jar shiro-core-1.2.6.jar shiro-spring-1.2.6.jar shiro-web-1.2.6.jar web…

命令行fuck神器

文章 thefuck git thefuck 轉載于:https://www.cnblogs.com/hujunzheng/p/6935587.html

springmvc配置MappingJackson2HttpMessageConverter實現屬性駝峰和下劃線的轉換

需求 php調用java接口時&#xff0c;因為php那邊的屬性都是下劃線風格&#xff0c;java這邊的屬性都是駝峰的風格。配置springmvc的json轉換&#xff0c;在requestBody的時候&#xff08;調用對象的set 方法&#xff09;將java屬性name映射成下劃線形式 和 請求的參數匹配&…

springmvc中使用MockMvc測試controller

示例代碼 import com.alibaba.fastjson.JSONObject; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springfra…

swagger restful api form映射實體對象和body映射實體對象配置

實體Model ModelAttribute一個具有如下三個作用&#xff1a; ①綁定請求參數到命令對象&#xff1a;放在功能處理方法的入參上時&#xff0c;用于將多個請求參數綁定到一個命令對象&#xff0c;從而簡化綁定流程&#xff0c;而且自動暴露為模型數據用于視圖頁面展示時使用&…

程序員的開發文檔

Web版&#xff1a; DevDocs API Documentation 桌面版&#xff1a;devdocs-app 轉載于:https://www.cnblogs.com/hujunzheng/p/7015947.html

ssh端口轉發(之kettle ssh方式連接數據庫)

ssh參數解釋 格式  ssh [user]host [command] 選項&#xff1a; -1&#xff1a;強制使用ssh協議版本1&#xff1b; -2&#xff1a;強制使用ssh協議版本2&#xff1b; -4&#xff1a;強制使用IPv4地址&#xff1b; -6&#xff1a;強制使用IPv6地址&#xff1b; -A&#xff1a…

ThreadLocal和InheritableThreadLocal使用

InheritableThreadLocal代碼 public class InheritableThreadLocal<T> extends ThreadLocal<T> {protected T childValue(T parentValue) {return parentValue;}ThreadLocalMap getMap(Thread t) {return t.inheritableThreadLocals;}void createMap(Thread t, T f…

mybatis generator修改默認生成的sql模板

相關連接&#xff1a; mybatis-generator擴展教程系列 -- 自定義sql xml文件 git項目地址 轉載于:https://www.cnblogs.com/hujunzheng/p/7110510.html

oauth簡單使用

一、oauth原理參考 理解OAuth 2.0 二、本例中采用授權碼模式 大致流程 &#xff08;A&#xff09;用戶訪問客戶端&#xff0c;后者將前者導向認證服務器。  &#xff08;B&#xff09;用戶選擇是否給予客戶端授權。  &#xff08;C&#xff09;假設用戶給予授權&#xff0c…

我眼中的服務提供和服務消費

服務提供和消費腦圖 服務提供和消費腦圖 參見: 服務提供者, 服務消費者, 服務注冊中心 服務提供者 1.服務提供者啟動&#xff0c;解析xml文件中配置的服務&#xff0c;這里使用Dom4j解析。 2.將服務的一些相關信息注冊到 服務注冊中心。 注&#xff1a;服務相關信息&#xff1a…

shiro整合oauth

前言 如果oauth原理還不清楚的地方&#xff0c;其參考這里。 一、基本思路腦圖 二、客戶端shiro配置 shiro配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:util&q…

springmvc+swagger2

一、swagger2依賴 <!--swagger--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><exclusions><exclusion><artifactId>spring-aop</artifactId><groupId>org.s…