在MyBatis中,可以使用批量操作来大批量存储数据。以下是一种实现方式
在MyBatis中,可以使用批量操作来大批量存储数据。以下是一种实现方式:
- 首先,定义一个Mapper接口,用于执行批量插入操作。在接口中,使用@Insert注解定义插入的SQL语句,并添加一个List参数,用于传入要插入的数据列表。
publicinterfaceMyMapper{
@Insert("INSERTINTOmy_table(column1,column2)VALUES(#{item.field1},#{item.field2})")
voidbatchInsert(List<MyData>dataList);
}
publicclassMyData{
privateStringfield1;
privateStringfield2;
//getterandsetter
}
<configuration>
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<!--数据源配置-->
</dataSource>
</environment>
</environments>
<mappers>
<mapperresource="my_mapper.xml"/>
</mappers>
<settings>
<settingname="jdbcTypeForNull"value="NULL"/>
<settingname="cacheEnabled"value="true"/>
<settingname="lazyLoadingEnabled"value="true"/>
<settingname="aggressiveLazyLoading"value="false"/>
</settings>
</configuration>
<mappernamespace="com.example.MyMapper">
<insertid="batchInsert"parameterType="java.util.List">
<foreachcollection="list"item="item"separator=";">
INSERTINTOmy_table(column1,column2)VALUES(#{item.field1},#{item.field2})
</foreach>
</insert>
</mapper>
publicclassMain{
publicstaticvoidmain(String[]args){
SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);
SqlSessionsession=sqlSessionFactory.openSession();
try{
MyMappermapper=session.getMapper(MyMapper.class);
List<MyData>dataList=newArrayList<>();
//添加要插入的数据到dataList
mapper.batchInsert(dataList);
session.commit();
}finally{
session.close();
}
}
}
通过以上步骤,就可以实现MyBatis的大批量存储数据功能。注意,在实际使用中,还可以根据具体需求对配置进行调整和优化,以提高插入数据的效率。
版权声明
本文仅代表作者观点,不代表博信信息网立场。