insert

常用属性

常用属性 默认值 说明 其他
useGeneratedKeys false 是否使用JDBC的getGeneratedKeys获取生成的主键 适用于自增字段
keyProperty getGeneratedKeys或由selectKey属性确定 parameterType中的唯一识别属性,一般为主属性,将会回填至bean 多个属性时,使用逗号分隔
keyColumn 唯一识别字段名,一般为主键 多个字段时,使用逗号分隔,部分数据库当主键不是第一列时必须设置

设置 useGeneratedKeys=true keyProperty="parameterType的主键属性" keyColumn="主键列名",即可在插入记录后,将主键写入bean

示例
1
2
3
<insert id="insertUser" parameterType="user" useGeneratedKeys=true keyProperty="id" keyColumn="id">
insert into user(username, password) values (#{username}, #{password});
</insert>
示例
1
2
User user = new User("Alice", "123456");
userMapper.insert(user);

user.id即为插入后的主键值

update

常用属性

常用属性 默认值 说明 其他
keyProperty 同insert的该属性
keyColumn 同insert的该属性

delete

常用属性

无特殊属性

selectKey

部分无法自动生成主键的情况,可以通过selectKey自定义生成主键的方式

常用属性 默认值 说明 其他
keyProperty 相当于insert的该属性
keyColumn 相当于insert的该属性
resultType 结果类型 如果不止一个,可以用Object或Map
statementType 语句类型
order* 执行时机 可选值为 BEFORE
  • order属性表示对于insert的执行时机,BEFORE时,先插入数据再调用selectKey生成主键,AFTER相反
  • Mysql等支持自增的数据库需要设为AFTER(插入数据后才能生成自增值);而Oracle需设为BEFORE(先调用序列生成主键再插入)