-
select – 映射查询语句
-
实例
- <select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
- 这个语句被称作 selectPerson,接受一个 int(或 Integer)类型的参数,并返回一个 HashMap 类型的对象,其中的键是列名,值便是结果行中的对应值
-
属性
-
id
- 在命名空间中唯一的标识符,可以被用来引用这条语句
- 必选
-
parameterType
- 将会传入这条语句的参数类的完全限定名或别名
- 可选
-
resultType
- 从这条语句中返回的期望类型的类的完全限定名或别名
-
注意
- 如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身
- 使用 resultType 或 resultMap,但不能同时使用
-
resultMap
- 外部 resultMap 的命名引用
-
注意
- 使用 resultMap 或 resultType,但不能同时使用
-
flushCache
- 将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空
- 默认值:false
-
useCache
- 将其设置为 true,将会导致本条语句的结果被二级缓存
- 默认值:对 select 元素为 true
-
timeout
- 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数
- 默认值为 unset(依赖驱动)
-
fetchSize
- 这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等
- 默认值为 unset(依赖驱动)
-
statementType
- STATEMENT,PREPARED 或 CALLABLE 的一个
- 这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement
- 默认值:PREPARED
-
resultSetType
- 这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的。
- delete – 映射删除语句
- insert – 映射插入语句
- update – 映射更新语句
- <select
id="selectPerson"
parameterType="int"
parameterMap="deprecated"
resultType="hashmap"
resultMap="personResultMap"
flushCache="false"
useCache="true"
timeout="10000"
fetchSize="256"
statementType="PREPARED"
resultSetType="FORWARD_ONLY">
-
insert、update、delete公共属性
-
id
- 命名空间中的唯一标识符,可被用来代表这条语句。
-
parameterType
- 将要传入语句的参数的完全限定类名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。
-
parameterMap
- 这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。
-
flushCache
- 将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,
- 默认值:true(对应插入、更新和删除语句)。
-
timeout
- 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。
- 默认值为 unset(依赖驱动)。
-
statementType
- STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,
- 默认值:PREPARED。
-
databaseId
- 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。
-
insert、update公共属性
-
useGeneratedKeys
- (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段)
- 默认值:false。
-
keyProperty
- (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值
- 默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
-
keyColumn
- (仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。