跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • SpringDataJPA @Query 动态参数
未分類
1 6 月 2020

SpringDataJPA @Query 动态参数

SpringDataJPA @Query 动态参数

資深大佬 : rainbowyao 0

select u.id,u.name,c.companyName from user u left join comapny c on u.company_id = u.id where u.name like ‘%:1%’ and c.company_id = 1 List<User> query(String name)

使用 JPA @Query nativeQuery 的时候如何动态传递参数 name?。name 参数为空的时候,不执行 u.name like 这个查询条件。不使用 JpaSpecificatonExecutor 是因为真实的业务 sql 比这个复杂的更多,上述只是举例。 是不是更合适使用 Mybatis?

大佬有話說 (12)

  • 資深大佬 : lpd0155

    动态就 M

  • 資深大佬 : hantsy

    @rainbowyao Quarkus 下的 Hibernate Pachane 支持这种语法。

    JPA 很容易用 Criteria API 自己构建逻辑复杂的查询,Spring Data JPA 添加 Specificaiton 简化操作。

    https://github.com/hantsy/spring4-sandbox/blob/master/data-jpa/src/main/java/com/hantsylabs/example/spring/jpa/spec/JpaSpecs.java

    如果熟悉 QueryDSL,Sprng Data JPA 也有集成。

    https://github.com/hantsy/spring4-sandbox/blob/master/data-jpa/src/main/java/com/hantsylabs/example/spring/jpa/spec/QueryDslPredicates.java

  • 資深大佬 : hantsy

    字符型 SQL 语句在项目中很难维护,type safe 在我以前很多项目中是基本要求。纯的 Type safe SQL 可以考虑 JOOQ 。

  • 主 資深大佬 : rainbowyao

    @hantsy 感谢,我学习学习

  • 資深大佬 : hantsy

    一直不明白的是为什么 V 看到不止一次,用 JPA Query 还要用 Native Query,用 Native Query 你不如直接用 Jdbc 啦。

  • 資深大佬 : eastflying

    where (:name is null or u.name like ‘%:name%’)

    如果觉得 Criteria 的语法太繁琐,也可以使用 QueryDSL
    类似
    BooleanBuilder builder = new BooleanBuilder();
    if (!StringUtils.isEmpty(name)) {
    builder.and(qUser.name.like(“%+name+”%”));
    }
    userRepository.findAll(builder);

  • 資深大佬 : running17

    这种非复杂的查询建议直接 querydsl 一把梭

  • 資深大佬 : hodur

    sql 里面可以 if else 的

  • 資深大佬 : securityCoding

    @hantsy 单表查询用原生 sql 纯属调试方便…

  • 資深大佬 : huntcool001

    国内的公司好像用 JPA 的比较少? 我发现国内大部分是 Mybatis, 国外是 Hibernate 一类的 ORM, 不知道为什么会这样

  • 資深大佬 : richard1122

    一般如果组合情况不是特别多的话还是建议用 spring data jpa 写两个查询

  • 資深大佬 : aragakiyuii

    Querydsl

    1. repository 继承 QuerydslPredicateExecutor,然后用 BooleanBuilder 拼条件
    2. JPAQueryFactory 写 dsl

    用 mybatis 不也得拼 sql 嘛?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具