mybatisバッチ挿入とプライマリ・キーの戻り

2330 ワード

転載先:https://blog.csdn.net/u014336799/article/details/52023887
 
まず、データベース接続構成で一括操作を許可するように設定します(接続データソースパラメータ構成にallowMultiQueries=trueが追加されました)
spring:
    profiles: dev
    datasource:
        name: testDatabase
        url: jdbc:mysql://localhost:3306/testTable?allowMultiQueries=true

 
自己増加プライマリ・キーの生成をサポートするデータベースには、Mapperが必要である.xmlのinsertノードでは、useGenerateKeysとkeyPropertyが使用されます.
 
プライマリ・キーを返すには、次の前提条件が必要です(プライマリ・キーを返す必要がない場合は無視します).
1、Mybatisバージョンを3.3.1にアップグレードする.
2、Daoで@param注記は使用できません.
3、Mapper.xmlではlist変数を使用してDaoの集合を受け入れます.
 
 UserService:
 
List userList = new ArrayList();
User user  = new User ();

user.setName("  ");
userList.add(user);

user.setName("  ");
userList.add(user);

user.setName("  ");
userList.add(user);

int result = userDao.insertUsers(userList);
if(result > 0){
  for(User user : userList){
    System.out.print(user.getUserId());//        ,               
  }
}

UserDao:
int insertUsers(List userList);//      @param  

mapper.xml
ここではcollection=「list」を使用してコレクションを巡回します.keyProperty="userId"は、UserオブジェクトのuserId属性に対応します.

  insert into user (name,cdate)
  values
  
    (#{item.name,jdbcType=VARCHAR}, #{item.cdate,jdbcType=VARCHAR})
  

---------------------------------------------------------------------------
返されるプライマリ・キーを取得する必要がない場合は、次のコードを使用します.
 
UserDao:
int insertUsers(@Param("userList") List userList);//    @param  ,xml              

mapper.xml
ここではcollection=「list」を使用してコレクションを巡回します.keyProperty="userId"は、UserオブジェクトのuserId属性に対応します.

  insert into user (name,cdate)
  values
  
    (#{item.name,jdbcType=VARCHAR}, #{item.cdate,jdbcType=VARCHAR})
  

---------------------------------------------------------------------------