jpa动态sql拼接_springboot中JPA使用动态SQL查询

更新时间:2023-05-16 18:47:16 阅读: 评论:0

jpa动态sql拼接_springboot中JPA使⽤动态SQL查询
spring boot中的jpa⾮常好⽤,但是在创建动态查询时稍微有些⿇烦。基本上有以下两种办法:乌龟怎么养
⽅法⼀:⽤criteria查询
import iteria.CriteriaBuilder;
import iteria.CriteriaQuery;
import iteria.Predicate;
import iteria.Root;
CriteriaBuilder接⼝⽤来构建Predicate,⽽Predicate接⼝⽤来连接⼦句,每次添加到predicate之前都要进⾏参数⾮空判断。
//dao层需继承JpaSpecificationExecutor
public interface BeanRepository extends JpaRepository, JpaSpecificationExecutor {
}
------------------
//关键代码apec是什么组织
@Override
public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) {
List predicates = new ArrayList();
//参数⾮空判断
if (("Key值") != null && StringUtils.isNotBlank((String) ("Key值"))) {
predicates.add(cb.("bean中的变量,eg.age").as(Integer.class), ("age对应的参数Map中的Key")));
}
return query.Array(new Predicate[predicates.size()]));
}
自处
⽅法⼆:直接使⽤原⽣SQL,构建query来执⾏
由于本⼈涉及到的前台传回来的sql长短和条件都不固定,并且参数较多,写起来很⿇烦。因此选择这种办法,将前台的数据拼接为sql,直接创建查询。
导⼊的包:
仓库的分类
import jpa.LocalContainerEntityManagerFactoryBean;
import javax.persistence.EntityManager;
import javax.persistence.Query;
EntityManager直接创建原⽣查询,createNativeQuery的参数(string sql,info.class)写⼊Bean.class,就直接可以⽤List接收了
private LocalContainerEntityManagerFactoryBean entityManagerFactory;
public void exec(){
EntityManager em = NativeEntityManagerFactory().createEntityManager();
StringBuilder sqljoint=new StringBuilder(300);
sqljoint.append("SELECT * ity where 1=1");
//sqljoint.apped("附加的where⼦句")
珠宝世界
String String();
纹头发图片男
//创建原⽣查询的时候,将info.class类即第⼆个参数,写成要传回的bean,这样就可以直接⽤List接收Query query = em.createNativeQuery(sql,EntityBean.class);
List ResultList();
}
低耗Ps:链接备忘
spring boot jpa 使⽤原⽣sql查询
一诺千金的故事
mapbox教程
⼿写汉字识别

本文发布于:2023-05-16 18:47:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/904823.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   前台   参数   办法   创建   动态   拼接
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图