zoukankan      html  css  js  c++  java
  • 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语句。

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

    •  

  • 相关阅读:
    数据预处理 --Sklearn preprocessing的理解
    平衡二叉树的插入旋转
    二叉树
    malloc/free 与 new/delete的区别
    C/C++ const总结
    C/C++ static总结
    C++未定义行为
    c++虚函数表
    visual studio mfc中 cout 输出
    ERROR C4996 UNSAFE
  • 原文地址:https://www.cnblogs.com/zhangliang88/p/13163444.html
Copyright © 2011-2022 走看看