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语句。

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

    •  

  • 相关阅读:
    Linux搭建JAVAWEB环境
    java异常捕获
    java流2
    java流
    32
    java代码List
    java代码输入流篇2
    java流类练习前篇
    java流网址:
    java中i/o练习
  • 原文地址:https://www.cnblogs.com/zhangliang88/p/13163444.html
Copyright © 2011-2022 走看看