跳到主要内容

@Query 注解

用来标记在接口方法上,执行一个可以返回结果集的查询语句。

信息

如果传入的是一个字符串数组,它们会被连接起来,中间用一个空格隔开。
通过字符串数组可以更清晰地管理多行 SQL。

示例:查询用户列表
@SimpleMapper
public interface UserMapper {
@Query("select * from users where id > #{id}") // 1. 定义 SQL 语句
List<User> listUsers(@Param("id") long searchId); // 2. id 为参数名,User 为返回类型
}

分页查询

方法参数中增加 Page 分页参数即可支持分页查询(Page 可以出现在参数的任意位置)。

返回 List
@SimpleMapper
public interface UserMapper {
@Query("select * from users where id > #{id}")
List<User> listUsers(@Param("id") long searchId, Page page);
}
返回 PageResult(含总记录数和总页数)
@SimpleMapper
public interface UserMapper {
@Query("select * from users where id > #{id}")
PageResult<User> listUsers(@Param("id") long searchId, Page page);
}
  • PageResult 除包含数据列表外,还提供 原始分页信息总记录数总页数

属性清单

属性名描述
value必选 将要被执行的查询语句。
statementType可选 JDBC 查询使用何种方式。默认值为 Prepared
- Statement 对应 java.sql.Statement
- Prepared 对应 java.sql.PreparedStatement
- Callable 对应 java.sql.CallableStatement
timeout可选 设置查询超时时间(秒),会调用 Statement.setQueryTimeout(int)。默认值 -1 表示不设置
fetchSize可选 设置每次从数据库获取的行数,会调用 Statement.setFetchSize(int)。默认值为 256
resultSetType可选 结果集类型,用于创建 Statement 时设置 resultSetType 参数。
- 可选值:FORWARD_ONLYSCROLL_INSENSITIVESCROLL_SENSITIVEDEFAULT(默认,相当于未设置)
resultSetExtractor可选 配置一个 ResultSetExtractor 类用于结果集处理(配置了 bindOut 时失效)
resultRowCallback可选 配置一个 RowCallbackHandler 类用于结果集处理(配置了 bindOut 时失效)
resultRowMapper可选 配置一个 RowMapper 类用于结果集处理(配置了 bindOut 时失效)
resultTypeHandler可选 配置一个 TypeHandler 类用于结果集处理(配置了 bindOut 时失效)
bindOut可选 当 Query 中使用了 多值存储过程调用 时,绑定其中的输出参数。
使用该参数时返回值类型必须为 Map<String,Object>