前序
java后端开发,因为现在主流的模式是前后端分离开发的模式,所以后端开发人员的工作除了逻辑上的功能实现之外最终的操作都是对数据库的增删改查,在公司中往往需要向数据库中批量的插入数据,我们已经拥有了文本式的数据那么怎么将它插入到数据库中呢?
自定义工具类:
我们自己定义一个工具类,这个工具类的主要功能是读取文本文档txt文件中的数据(前提是每一行是一个对象,并且以空格将属性分开)读取出来封装成一个个对象,讲对象存储到集合当中,然后工具类将这个集合返回.
工具类代码如下:
public class BankUtil { public static List<BankValue> readTxtFile(String filePath, List<BankValue> list){ try { // String encoding="GBK"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file));//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ BankValue bankValue=new BankValue(); // BankCode bankCode = new BankCode(); String [] arr = lineTxt.split("\\s+"); bankValue.setBankName(arr[0]); bankValue.setBankValue(arr[1]); // bankCode.setBankCode(arr[0]); // bankCode.setBankName(arr[1]); list.add(bankValue); // System.out.println(lineTxt); } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return list; } }
批量插入
实体类对应的接口如下:
public interface BankValueMapper { int insert(List<BankValue> list); }
在对应的映射配置文件中的批量插入的代码如下:
<insert id="insert" parameterType="list"> insert into tb_bank_value (bank_name, bank_value) values <foreach collection="list" item="item" index="index" separator=","> ( #{item.bankName}, #{item.bankValue} ) </foreach> </insert>
测试代码如下:
@Test public void testBankCode(){ String filePath = "C:\\Users\\ZYH\\Desktop\\bankvalue.txt"; // "res/"; List<BankValue> list=new ArrayList<>(); List<BankValue> BankValueList = BankUtil.readTxtFile(filePath, list); int i = bankValueMapper.insert(BankValueList); System.out.println(i); }