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