Mybatis Oracleを使用してデータを一括追加、更新する方法
3178 ワード
最近私はMybatisを使ってデータを挿入して更新して小さい面倒に出会って、ネット上で大量を検索して、感じはとても意のままではありませんて、最后に高い人の指导を経て、出して、具体的に以下のコードを见てください
エンティティ:
mapper.xmlファイルは次のとおりです.
これは死んで、どれだけのデータがあって、どれだけのupdate文があって、まだ何か良い方法があることを知らないで、私は少なくとも今探し当てていません
データを挿入するには、次のように書きます.
これらを完了すると、テストコードは次のようになります.
テスト成功
エンティティ:
public class Author implements Serializable {
private String author_id;
private String userName;
private String password;
private String email;
private String bio;
mapper.xmlファイルは次のとおりです.
<update id="updateAuthorBatch" parameterType="com.deppon.cms.mybatis.domain.Author">
begin
<foreach collection="list" item="item" index="index" separator=";">
update t_zxw_author
<set>
<if test="item.userName != null">
username=#{userName,jdbcType=VARCHAR},
</if>
<if test="item.password != null">
password = #{password,jdbcType=VARCHAR}
</if>
</set>
where author_id in
#{item.author_id,jdbcType=VARCHAR}
</foreach>
;end;
</update>
これは死んで、どれだけのデータがあって、どれだけのupdate文があって、まだ何か良い方法があることを知らないで、私は少なくとも今探し当てていません
データを挿入するには、次のように書きます.
<insert id="batchInsert" parameterType="java.util.List">
<!-- <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="author_id"> -->
<!-- SELECT SYS_GUID() FROM DUAL -->
<!-- </selectKey> -->
insert into t_zxw_author(author_id,username,password,email,bio)
<foreach collection="list" item="item" index="index" separator="union all">
select SYS_GUID(),#{item.userName,jdbcType=VARCHAR},#{item.password,jdbcType=VARCHAR},#{item.email,jdbcType=VARCHAR},#{item.bio,jdbcType=VARCHAR} from dual
</foreach>
これらを完了すると、テストコードは次のようになります.
@Test
public void testAddAuthorBatch(){
List<Author> list = new ArrayList<Author>();
Author author = null;
for(int i=0;i<100;i++){
author = new Author();
author.setBio("gaga");
author.setEmail("ggg");
author.setPassword("gggg");
author.setUserName("uyyyyy");
list.add(author);
}
authorDao.addAuthorBatch(list);
}
@Test
public void testUpdateAuthorBatch(){
List<Author> list = new ArrayList<Author>();
Author author = new Author();
Author author1 = new Author();
author.setUserName(" ");
author.setPassword("gggg");
author.setAuthor_id("DDC5B92630ADF245E040A8C091111E6B");
author1.setAuthor_id("DDE78A0195BAC662E040A8C09111737F");
author1.setUserName("hhh");
author.setPassword("kjasdjf");
list.add(author);
list.add(author1);
authorDao.updateAuthorBatch(list);
}
テスト成功