如何使用mybatis代码批量导入excel数据到数据库
时间: 2023-05-19 17:05:20 浏览: 139
您可以使用以下步骤来使用 MyBatis 代码批量导入 Excel 数据到数据库:
1. 创建一个 POJO 类来表示 Excel 表格中的每一行数据。
2. 使用 Apache POI 库来读取 Excel 文件并将数据存储到 POJO 对象中。
3. 创建一个 MyBatis Mapper 接口和对应的 XML 文件,用于将 POJO 对象插入到数据库中。
4. 在 Mapper 接口中定义一个批量插入的方法,使用 MyBatis 提供的批量操作 API 批量插入数据。
5. 在代码中调用批量插入方法,将读取到的 Excel 数据批量插入到数据库中。
以下是一个示例代码:
// 定义 POJO 类
public class ExcelData {
private String name;
private int age;
// 省略 getter 和 setter 方法
}
// 使用 Apache POI 读取 Excel 文件
List<ExcelData> dataList = new ArrayList<>();
Workbook workbook = WorkbookFactory.create(new File("data.xlsx"));
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
ExcelData data = new ExcelData();
data.setName(row.getCell(0).getStringCellValue());
data.setAge((int) row.getCell(1).getNumericCellValue());
dataList.add(data);
}
// 定义 MyBatis Mapper 接口和 XML 文件
public interface ExcelDataMapper {
void insertBatch(List<ExcelData> dataList);
}
<!-- ExcelDataMapper.xml -->
<mapper namespace="com.example.mapper.ExcelDataMapper">
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO excel_data (name, age) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.age})
</foreach>
</insert>
</mapper>
// 调用批量插入方法
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sessionFactory.openSession(ExecutorType.BATCH)) {
ExcelDataMapper mapper = session.getMapper(ExcelDataMapper.class);
mapper.insertBatch(dataList);
session.commit();
}
阅读全文