一、默認配置下, 使用了@Query註解後就不會再使用方法名解析的方式了,上面這種事依然是面向對象查詢,sql語句中寫實體類名和屬性名, :後加變量,表示這是一個參數,相似sql預編譯的 ?。java
@Query("from User where userId = :userId") User findByUserId(@Param("userId") userId);
二、當不須要表中的全字段時,可自定義dto類來接受查詢結果,這種方法要注意使用new + dto類全路徑+ (別名.field1, 別名.field2, 別名.field3), 且dto類中必須有對應參數結構的構造函數!別忘記加上無參的構造函數!sql
@Query("select new com.user.domain.UserDto(a.userName, a.gender) from User a where userId = :userId") UserDto findByUserId(@Param("userId") userId);
三、使用註解屬性 native=true(默認false),可執行原生sql語句dom
@Query(value="select * from t_user where user_id = :userId", native=true) User findByUserId(@Param("userId") userId);
四、修改操做加上 @Modify註解函數
@Query(value="update User set userId = :userId") @Modify User findByUserId(@Param("userId") userId);