SpringData JPA @Query动态SQL语句,且分页


一,带参查询(1、根据参数位置2、根据Param注解)

/**
     * 查询根据参数位置
     * @param userName
     * @return
     */
    @Query(value = "select * from sys_user  where userName = ?1",nativeQuery = true)
    SysUser findSysUserByUserName(String userName);
 
    /**
     * 查询根据Param注解
     * @param userName
     * @return
     */
    @Query(value = "select u from SysUser u where u.userName = :userName")
    SysUser findSysUserByUserNameTwo(@Param("userName") String userName);
  • @Query有nativeQuery=true,表示可执行的原生sql,原生sql指可以直接复制sql语句给参数赋值就能运行
  • @Query无nativeQuery=true, 表示不是原生sql,查询语句中的表名则是对应的项目中实体类的类名
  • 如图
  •  

    动态sql语句如下

  • @Query(value = "select * from project_demand where project_id=?1 and if(?2!='',demand_id in (select demand_id from demand_user where user_id=?2),1=1)",nativeQuery = true)

  • 红色部分,就是生成动态SQL的方法,利用MYSQL的if函数和我们传递的参数去进行判断,然后获取SQL语句。

如下截图是既有动态参数,又有固定参数,还有分页功能的部分截图,有问题可以留言讨论

  •  

     

     

     


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM