美文网首页程序员
4.2 映射器(Mapper) insert、update、de

4.2 映射器(Mapper) insert、update、de

作者: 落叶飞逝的恋 | 来源:发表于2017-08-23 21:31 被阅读224次

数据变更语句 insert、update、delete的实现非常接近

insert元素,MyBatis会在执行插入之后返回一个整数,以表示你进行操作后插入的记录数

update、delete元素,MyBatis执行完之后会返回一个整数,标出执行后影响的记录数。

1.Insert, Update, Delete 标签元素属性

  • 1.id

与select标签的id属性含义一样。作为唯一标识来代表这条语句。

  • 2.parameterType

定义传入参数的完全限定类名或者别名。

  • 3.flushCache

boolean属性,默认值为true。任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空。select标签默认是false

  • 4.timeout

设置超时时间,单位为秒。

  • 5.statementType

枚举属性,有三个枚举:STATEMENT、PREPARED 、CALLABLE 。告诉JDBC使用哪个statement工作。默认值为PREPARED

  • 6.useGeneratedKeys(仅对 insert 和 update 有用)

boolean属性。默认值为false。表明数据库是否采用自增长的字段。

  • 7.keyProperty(仅对 insert 和 update 有用)

表示以哪个列作为属性的主键。不能与KeyColumn同时使用。联合主键可以用逗号(,)隔开。

  • 8.keyColumn(仅对 insert 和 update 有用)

表示第几列是主键。只接受整形参数。不能与keyProperty同时使用。联合主键用逗号(,)隔开。

  • 9.databaseId

如果配置了 databaseIdProvider,MyBatis会加载所有的不带 databaseId或匹配当前databaseId的语句;如果带或者不带的语句都有,则不带的会被忽略。

2.示例

<insert id="insertAuthor">
  insert into Author (id,username,password,email,bio)
  values (#{id},#{username},#{password},#{email},#{bio})
</insert>

<update id="updateAuthor">
  update Author set
    username = #{username},
    password = #{password},
    email = #{email},
    bio = #{bio}
  where id = #{id}
</update>

<delete id="deleteAuthor">
  delete from Author where id = #{id}
</delete>

3.insert的主键回填

当我们执行对一个对象插入操作后,需要获取插入后的对象的主键。那我们就指定useGeneratedKeys属性及keyProperty属性

<insert id="insert" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO student (
        `name`,
        `age`,
        `rowStatus`,
        `createdOn`
    ) VALUES (
        #{name},
        #{age},
        #{rowStatus},
        #{createdOn}
    )
</insert>

MyBatis执行插入成功后,会把自增id的属性映射到POJO的id属性上。

4.批量插入

如果你的数据支持多行插入,你也可以传入一个数组或者集合,并返回自动生成的主键。

<insert id="insertAuthor" useGeneratedKeys="true"
    keyProperty="id">
  insert into Author (username, password, email, bio) values
  <foreach item="item" collection="list" separator=",">
    (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
  </foreach>
</insert>

相关文章

网友评论

    本文标题:4.2 映射器(Mapper) insert、update、de

    本文链接:https://www.haomeiwen.com/subject/enbjdxtx.html