Mybatis 向指定表中批量插入数据

来源:互联网 发布:3dcg制作软件 编辑:程序博客网 时间:2024/05/17 09:32

最近做项目有个需求是根据传入参数的不同,向不同的数据表中批量插入数据。所以传入参数有两个,一个是String类型,指定要插入的某个具体数据表的名称;另一个是List类型,是需要被存入数据库的数据列表。需要将这两个数据封装为一个map类型的数据。以User实体为例进行代码说明。

UserMapper.xml的方法

    <insert id="insertUser" parameterType="java.util.Map">        insert into ${tablename}        (building, room, name, phone, email)        values        <foreach collection="userPOS" item="UserPO"  index= "index" separator =",">            (            #{UserPO.building},             #{UserPO.room},            #{UserPO.name},            #{UserPO.phone},            #{UserPO.email}            )        </foreach>    </insert>

UserMapper中对应的接口

 /**     * 批量新增用户数据     * @param params     * @return     * @throws Exception     */    public int insertUser(Map<String,Object> params);

本例为简化流程,直接在Dao层进行测试了,实际应用中需要再封装Service等。

UserDao中对应的操作

 public static int insertUser(Map<String,Object> params) {        SqlSession session = DBTools.getSession();        BuildingOneMapper mapper = session.getMapper(UserMapper.class);        try {            mapper.insertUser(params);            session.commit();        } catch (Exception e) {            e.printStackTrace();            session.rollback();            return 400;        }        return 200;    }public static void main(String[] args){        List userPOS = new ArrayList<UserPO>();        UserPO userPO = new UserPO();        userPO.setBuilding("01");        userPO.setRoom("102");        userPO.setName("queen");        userPO.setPhone("18823452333");        userPO.setEmail("123456@163.com");        for(int i =0;i<10;i++){            userPOS.add(userPO);        }        Map<String,Object> params = new HashMap<String, Object>();        params.put("tablename","firstgroup");        params.put("userPOS",userPOS);        UserDao.insertUser(params);}
原创粉丝点击