Jpa常用API
service中执行sql
根据请求参数拼接sql
import javax.persistence.Query;
import javax.persistence.EntityManager;
@Autowired
private EntityManager em;
StringBuffer sql = new StringBuffer();
// 执行sql
Query query = em.createNativeQuery(sql.toString());
// 返回值的集合(每个Object[]代表一行记录的值数组)
List<Object[]> data = query.getResultList();
// 获取对应的属性,顺序要和值的顺序一样(也就是表头)
Repository查询
sql形式的方法名
查询:
例:findAllByParamsKeyAndValue
findAllBy + 实体属性名(首字母大写)+ sql条件拼接关键字(And或Or)+ 实体属性名(首字母大写)
例: findByOrgIdAndApprovalIdOrderByApIdDesc
根据ApId字段降序
存在判断
例:existsById
existsBy + 实体属性名(首字母大写)
自定义sql
例:
import org.springframework.data.jpa.repository.Query;
@Query(
value =
"SELECT * FROM table_name WHERE id = ?1",nativeQuery = true)
EntityName selectOne(Long id);
动态拼接条件查询
例:
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.CriteriaBuilder;
* @param orgId id
* @param startDateFrom 开始时间
* @param endDateFrom 结束时间
* @param actName 名称
List<EntityName > all =
EntityNameRpository.findAll(
(root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>(); // and 条件
// 时间
if (StringUtils.isNotBlank(startDateFrom)) {
Date startDate = DateExtUtils.StringToDate(startDateFrom);
// startDate为实体属性名,下同理
predicates.add(
cb.greaterThanOrEqualTo(root.get("startDate").as(Date.class), startDate));
}
if (StringUtils.isNotBlank(endDateFrom)) {
Date endDate = DateExtUtils.StringToDate(endDateFrom);
predicates.add(cb.lessThanOrEqualTo(root.get("endDate").as(Date.class), endDate));
}
predicates.add(
cb.equal(root.get("rowst").as(Long.class), RowStatusEnum.VALID.getCode()));
// id信息
predicates.add(cb.equal(root.get("orgId").as(Long.class), finalOrgId));
// 模糊检索 名称
if (StringUtils.isNotBlank(actName)) {
predicates.add(cb.like(root.get("actName").as(String.class), "%" + actName + "%"));
}
// 添加in条件
CriteriaBuilder.In<String> in = cb.in(root.get("approvalId"));
List<String> list1 = new ArrayList<>();
list1.add("1");
list1.add("2");
list1.add("3");
for (String approvalId : list1) {
in.value(approvalId);
}
CriteriaBuilder.In<String> in1 = cb.in(root.get("approvalId"));
list1.clear();
list1.add("4");
list1.add("10");
for (String approvalId : list1) {
in1.value(approvalId);
}
predicates.add(
cb.or(cb.and(in, cb.equal(root.get("approvalState"), accUser.getId())), in1));
return query
.orderBy(cb.desc(root.get("apId")))
.where(cb.and(predicates.toArray(new Predicate[0])))
.getRestriction();
});
以上均为个人理解,有待完善......
Jpa常用API的更多相关文章
- JPA常用注解
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA由EJB 3.0软件专家 ...
- JPA常用注解(转载)
转自:http://blog.csdn.net/wanghuan203/article/details/8698102 JPA全称Java Persistence API.JPA通过JDK 5.0注解 ...
- Java基础学习总结(41)——JPA常用注解
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA由EJB 3.0软件专 ...
- JPA 相关API (一)
[Query 接口下的常用API] [API 测试类:Test_QueryAPI.java] 1 package org.zgf.jpa.entity; 2 3 import java.math.Bi ...
- html5 canvas常用api总结(一)
1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...
- compass General 常用api学习[Sass和compass学习笔记]
compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
- C++ 中超类化和子类化常用API
在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWi ...
- node.js整理 02文件操作-常用API
NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...
随机推荐
- 我有 7种 实现web实时消息推送的方案,7种!
技术交流,公众号:程序员小富 大家好,我是小富- 我有一个朋友- 做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里 ...
- JAVA定时任务原理入门
本文适用语言:java 序章:定时任务实现方式 当下,java编码过程中,实现定时任务的方式主要以以下两种为主 spring框架的@Scheduled quzrtz框架 网络上关于这两种框架的实践和配 ...
- NFS 服务器配置(Ubuntu)
# NFS 服务器配置(Ubuntu 20.0) # 1.配置网络环境 # NFS 的客户端和服务端必须在同一局域网 # 2.在服务器上安装nfs sudo apt-get install nfs-c ...
- 用JavaScript写随机出一个颜色
function changeColor(){ var r = parseInt(Math.random()*255) var g = parseInt(Math.random()*255) var ...
- 完成 DolphinScheduler 新手任务赢好礼活动 | 倒计时3 天
想轻松参与 DolphinScheduler 项目贡献吗? 想获得 500 元京东购物卡吗? 参与活动,有机会得更多活动奖励! 活动截止至6月30日 了解更多详情: 在你参与 DolphinSched ...
- springmvc静态资源配置
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springf ...
- Git 10 IDEA撤销推送
参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 如果推送了多 ...
- mybatis 10: 动态sql --- part2
< foreach >标签 作用 用来进行循环遍历,完成循环条件的查询,批量删除,批量增加,批量更新 用法 循环查询 + 批量删除 + 批量增加 + 批量更新 UsersMapper.ja ...
- MySQL-配置参数时 报错:remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu......
报错:remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu...... 原因: 1.第一次配置参数时,不完整,出现错误!,(报错也会产生CMak ...
- JavaScript基础回顾知识点记录2
js 使用嵌套for循环输出三角形 for(var i=0; i<5; i++){ //正三角 // for(var j=0; j<i+1; j++){ // document.write ...