ibatis批量insert是什么写法?要怎么编写?

TheDisguiser 2020-07-27 16:27:30 java常见问答 8928

与数据库的交互操作永远是一个框架的评判标准,什么项目都离不开数据库,这次我们来看看ibatis该怎么批量实现insert吧。

ibatis框架中使用回调接口就可以实现数据的批量操作,减少对数据库的访问次数,提高性能。

例:

/**
 * ibatis批量插入数据
 * @param recordList
 */
public void insertRecordByList(final List < Record > recordList)
{
    this.getSqlMapClientTemplate()
        .execute(new SqlMapClientCallback()
        {
            public Object doInSqlMapClient(SqlMapExecutor executor)
            throws SQLException
            {
                executor.startBatch();
                // 每次提交最大条数
                final int batchSize = 200;
                int count = 0;
                for (Record record: recordList)
                {
                    executor.insert("Record.insertRecord", record);
                    // 每200条数据提交一次
                    if (++count % batchSize == 0)
                    {
                        executor.executeBatch();
                    }
                }
                // 提交剩余的数据
                executor.executeBatch();
                return null;
            }
        });
}

对应配置

<sqlMap namespace="Record">
	<typeAlias alias="record" type="me.gogogogo.domain.Record" />

	<insert id="insertRecord"  parameterClass="record">
		insert into record
			(id, 
			record, 
			insetDate) 
		values 
			(sequence_record.nextval, 
			#record#, 
			sysdate)
	</insert>
</sqlMap>

以上就是本篇文章的所有内容,更多有关java架构师详情,敬请关注奇Q工具网了解具体。

推荐阅读:

ibatis调用存储过程如何实现?

ibatis分页如何实现?代码实例

ibatis动态拼接sql怎么实现?