mapperXML标签总结
- SQL映射文件的顶级元素
- insert-映射插入语句
- update-映射更新语句
- delete-映射删除语句
- select-映射查询语句
select标签
<select id="selectPerson"
resultType="hashmap" resultMap="自定义结构"> SELECT * FROM PERSON WHERE ID = #{id} </select>
这个语句名为selectPerson,接受一个int或integer类型的参数,并返回一个HashMap类型的对象,其中的键是列名,值是结果行中对应值
注意参数的符号#{} ${}
MyBatis创建一个预处理语句(PreparedStatement)参数,在JDBC中,这样的一个参数在SQL中会由一个问号来标识,并传递到一个新的预处理语句中
// 近似的 JDBC 代码,非 MyBatis 代码...
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);
- select元素允许配置的属性
- id
- 在命名空间中唯一的标识符,可以被用来引用这条语句
- resultType
- 从这条语句中返回结果的类全限定名或别名
- 如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型
- resultType和resultMap之间只能同时使用一个
- resultMap
- 对外部resultMap的命名引用
- timeout
- 设置在抛出异常前,驱动程序等待数据库返回请求结果的秒速,默认值为依赖数据库驱动
- statementType
- 可选STATEMENT,PREPARED或CALLABLE。这回让MyBatis分别使用Statement,PreparedStatement或CallableStatement,默认值为PREPARED
- id
insert,update,delete标签
<insert
id="insertAuthor"
statementType="PREPARED"
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout="20">
<update
id="updateAuthor"
statementType="PREPARED"
timeout="20">
<delete
id="deleteAuthor"
statementType="PREPARED"
timeout="20">
- id
- 在命名空间中唯一的标识符,可以被用来引用这条语句
- timeout
- 设置在抛出异常之前,驱动程序等待数据库返回请求结果的秒速
- statementType
- 可选 STATEMENT,PREPARED 或 CALLABLE。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。
- useGeneratedKey
- 只适用于insert和update
- 设置为
true
这会使得MyBatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键
- keyProperty
- 只适用于insert和update
- 指定用于存放唯一标识的对象属性
- MyBatis会使用getGeneratedKeys的返回值或insert语句的selectKey子元素设置它的值,默认值:unset
- 如果生成列不止一个,可以用逗号分隔多个属性名称
- keyColumn
- 只适用于insert和update
- 设置成生成键值在表中的列名,在某些数据库(如:PostgreSQL)中,当主键列不是表中的第一列的时候是必须设置的,如果生成列不止一个,可以用逗号分隔多个属性名称