Mybatis批量插入的两种方法

我们在操作数据库的时候免不了向数据库插入数据,那么mybatis是如何进行数据批量插入的呢?

mybatis进行数据批量插入的时候有两种方式:

1.方法一:


        INSERT INTO tbl_employee (last_name,email,gender,d_id)
        VALUES
            
                (#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
            
    
对应的mapper接口方法:

    public void addEmps(@Param("emps") List emps);
测试方法:

public void  testBatchSave(){
        String resource = "conf/conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = MyBatisTest.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //2.获取sqlsession对象,代表和数据库的一次会话,用完必须关掉
        //sqlsession和connection一样都是非线程安全。每次使用都应该获取新的对象
        SqlSession session = sessionFactory.openSession();
        try {
            EmployeeMapperDynamicSQL mapper = session.getMapper(EmployeeMapperDynamicSQL.class);
            List emps = new ArrayList <>();
            emps.add(new Employee(null,"smith1","@qq.com","1",new Department(3)));
            emps.add(new Employee(null,"smith2","@qq.com","0",new Department(3)));
            emps.add(new Employee(null,"smith3","@qq.com","1",new Department(3)));

            mapper.addEmps(emps);
            session.commit();
        }finally {
            session.close();
        }
    }
2.方法二:

在使用方法二之间我们需要对数据库做一些设置,我们在连接数据库写上下面的属性:

allowMultiQueries=true
这句话的意思是:Jdbc Url 中设置allowMultiQueries=true时,可以允许一次执行多条sql(通过分号分割)。

        
            
            
            
                
                
                
                
            
        
    
xml中的代码

  
        
                INSERT INTO tbl_employee (last_name,email,gender,d_id)
                VALUES (#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
        
    
mapper接口的方法:

    public void addEmps(@Param("emps") List emps);
测试类和方法一是一致的,知识实现的方法不同。

本人小白,希望对大家的学习有所帮助。如有错误,请指正,谢谢。



你可能感兴趣的:(java,mybatis基础教程)