select
定义
select标签用于映射SQL中查询语句
参数符号
若以 #{}
作为参数符号,MyBatis 则会创建一个预处理语句(PreparedStatement),它会被处理成?
。如果你不希望使用预处理,那么可以使用${}
参数符号,MyBatis 会将其以字符串的形式进行拼接,不过我们推荐你使用 #{}
,几乎所有人也都这样做。
select属性
我们摘取其中常见且重要的属性,如下表所示:
属性 | 描述 |
---|---|
id | 在命名空间中唯一的标识符 header |
parameterType | 语句的参数类型,默认可选,MyBatis 会自动推断 |
resultType | 语句返回值类型,如果返回的是集合,那应该设置为集合包含的类型 |
resultMap | 语句返回映射的 id;可以使用 resultType 或 resultMap,但不能同时使用。 |
flushCache | 设置为 true 后,只要语句被调用,都会导致本地缓存和二级缓存被清空,默认为 false |
useCache | 设置为 true 后,本条语句的查询结果被二级缓存缓存起来,默认 select 标签为 true。 |
timeout | 设置超时时间 |
fetchSize | 设置预期返回的记录数量 |
statementType | STATEMENT,PREPARED 或 CALLABLE 中的一个,默认为 PREPARED(预处理) |
参数配置
#{}
不仅可以传入参数名称,还可以传入参数类型和类型处理器。
比如:
#{age,javaType=int,jdbcType=int,typeHandler=IntegerTypeHandler}
其中 javaType 表示 age 的 Java 类型,jdbcType 表示 age 的数据库类型,typeHandler 表示 age 的类型处理器,关于类型处理器我们将在后面的章节介绍。
对于参数配置,90% 的情况你都只需要传入参数名即可,因为 MyBatis 都会自动推断出配置。