一,帶參查詢(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語句。
如下截圖是既有動態參數,又有固定參數,還有分頁功能的部分截圖,有問題可以留言討論

