mybatis–基础–3.3–xml映射文件–insert,update,delete元素
代码地址
https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/mybatis-learn-master
1、insert,update,delete元素
<-------------insert--------->
<insert
id="insertAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout="20">
<-------------update--------->
<update
id="updateAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
timeout="20">
<-------------delete--------->
<delete
id="deleteAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
timeout="20">
2、属性
- id:
- sql语句的唯一标识符
- parameterType
- 参数类型,使用全类名或者别名
- 可选:MyBatis可以通过TypeHandler推断出具体传入语句的参数类型
- 默认值:unset
- flushCache
- true:任何时候只要语句被调用,都会清空本地缓存和二级缓存
- 默认值:false。
- timeout
- 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。
- 默认值为unset(依赖驱动)。
- statementType
- STATEMENT,PREPARED或CALLABLE 的一个。这会让MyBatis分别使用 Statement,PreparedStatement或CallableStatement,
- 默认值:PREPARED。
- useGeneratedKeys
- 仅针对insert、update
- MyBatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键值
- 默认值:false。
- keyProperty
- 仅针对insert、update
- 唯一标记一个属性
- MyBatis通过getGeneratedKeys的返回值或者通过insert语句的selectKey子元素设置它的键值
- 默认:unset。
- 可以得到多个生成的列,使用逗号分隔的属性名称列表。
- keyColumn
- 仅针对insert、update
- 通过生成的键值设置表中的列名
- 这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。
- 可以得到多个生成的列,使用逗号分隔的属性名称列表。
- databaseId
- 如果配置了databaseIdProvider,MyBatis会加载所有的不带databaseId或匹配当前 databaseId的语句;
- 如果带或者不带的语句都有,则不带的会被忽略。
2.1、属性测试
2.1.1、代码结构
2.1.2、useGeneratedKeys,keyProperty
<insert id="insert" useGeneratedKeys="true"
keyProperty="id">
insert into user (user_name,password)
values (#{userName},#{password})
</insert>
2.1.3、SelectKey
<insert id="insert2">
insert into user (user_name,password)
values (#{userName},#{password})
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
2.1.4、SelectKey属性
<selectKey
keyProperty="id"
resultType="int"
order="BEFORE"
statementType="PREPARED">
- keyProperty
- selectKey语句结果应该被设置的目标属性。
- 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
- keyColumn
- 匹配属性的返回结果集中的列名称。
- 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
- resultType
- 返回类型
- order
- BEFORE
- 首先选择主键,设置keyProperty然后执行插入语句
- AFTER
- 先执行插入语句,然后设置keyProperty的值
- BEFORE
- statementType
- STATEMENT,PREPARED或CALLABLE 的一个。这会让MyBatis分别使用 Statement,PreparedStatement或CallableStatement,
- 默认值:PREPARED。