Mybatis之foreach批量插入

1接口

public boolean insertMembersBatch(@Param("memberList") List<Members> members);

@param参数别名

2.xml文件

    <insert id="insertMembersBatch">
        insert into members (member_name,pass_word,age) values 
        <foreach collection="memberList" item="member" separator=",">
            (#{member.member_name},#{member.pass_word},#{member.age})
        </foreach>
    </insert>

collection:参数别名

item:每个元素的名字

separator:元素之间的分割符号

3.测试

    public static void main(String[] args) throws IOException {
        SqlSession session = getSqlSession();
        try {
            // 面向接口方式
            MemberMapperDynamicSQL mapper = session.getMapper(MemberMapperDynamicSQL.class);
            Members member1 = new Members(null, "老张", "123456", "25");
            Members member2 = new Members(null, "老郑", "123456", "25");
            Members member3 = new Members(null, "老李", "123456", "25");
            List<Members> list = new ArrayList<Members>();
            list.add(member1);
            list.add(member2);
            list.add(member3);
            mapper.insertMembersBatch(list);
            session.commit();
        } finally {
            // 关闭session
            session.close();
        }
    }

    public static SqlSession getSqlSession() throws IOException {
        // 读取全局配置文件
        String resource = "conf/mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 打开session
        SqlSession session = sqlSessionFactory.openSession();
        return session;
    }

4.测试结果

==>  Preparing: insert into members (member_name,pass_word,age) values (?,?,?) , (?,?,?) , (?,?,?) 
==> Parameters: 老张(String), 123456(String), 25(String), 老郑(String), 123456(String), 25(String), 老李(String), 123456(String), 25(String)
<==    Updates: 3

 

posted @ 2018-01-22 21:47  在谷歌上百度  阅读(263)  评论(0编辑  收藏  举报