一、默认配置下, 使用了@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);