SpringData JPA @Query动态SQL语句,且分页
一,带参查询(1、根据参数位置2、根据Param注解)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /** * 查询根据参数位置 * @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语句。
如下截图是既有动态参数,又有固定参数,还有分页功能的部分截图,有问题可以留言讨论
每天学习一点点,你就进步一点点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?