【问题标题】:How can I do batch insert using ibatis annotations如何使用 ibatis 注释进行批量插入
【发布时间】:2014-10-29 20:10:36
【问题描述】:

我找不到这方面的教程,而且我发现文档很少。如何使用 ibatis 注解进行批量插入?

public interface MyTableMapper {
    @Insert("insert into MyTable(col1) values (#{valueOfCol1})")
    void insert(MyRecordClass obj);
}


public class MyTransactionalClass {
    @Transactional
    public void insert(MyRecordClass obj) {
        myTableMapperInst.insert(obj);
    }
}

我做了这个幼稚的实现(令人惊讶的是没有成功:-):

public class MyTransactionalClass {
@Transactional(executorType = ExecutorType.BATCH)       
 public void insert(MyRecordClass obj) {
        myTableMapperInst.insert(obj);
    }
}

【问题讨论】:

    标签: java jdbc ibatis.net


    【解决方案1】:

    这没有注释,根据文档,您的方式似乎是正确的。

    try {
        sqlMap.startTransaction()
        List list = (Employee) sqlMap.queryForList("getFiredEmployees", null);
        sqlMap.startBatch ();
        for (int i=0, n=list.size(); i < n; i++) {
            sqlMap.delete ("deleteEmployee", list.get(i));
        }
        sqlMap.executeBatch();
        sqlMap.commitTransaction();
        } finally {
            sqlMap.endTransaction();
      }
    

    【讨论】:

      【解决方案2】:

      iBatis注解插入批量记录你可以这样做

       @Insert({"<script>", 
              "insert into  user_master (first_name,last_name) values ",
              "<foreach collection='userList' item='user' index='index' open='(' separator = '),(' close=')' >#{user.first_name},#{user.last_name}</foreach>",
              "</script>"})
          int insertUserList(@Param("userList") List<UserNew> userList);
      

      这对我有用,我使用上面的单次插入在我的 PostgreSQL 数据库中插入了批量记录。

      【讨论】:

        猜你喜欢
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 2018-11-19
        • 2017-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        相关资源
        最近更新 更多