mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加

来源:互联网 发布:古天乐普通话 知乎 编辑:程序博客网 时间:2024/05/31 18:39

创建用户:

/*** 创建一个或多个新用户 insert 字段和表名不确定时动态添加*/@Testpublic void createAccount() {    String lineColumn = "";    Map<String, Object> paramsMap = new HashMap<String, Object>();    Map<String, Object> dataMap = new HashMap<String, Object>();    // map的key值为字段,value为需要insert 用户的值。一个map即是一个新用户    List<Map<String, Object>> lineList = new ArrayList<Map<String, Object>>();    dataMap.put("name", "鱼多");    dataMap.put("password", "123456");    dataMap.put("gender", "女");    dataMap.put("id_no", "14");    lineList.add(dataMap);    // 为了使字段和values()里面的值对应起来,遍历出map的key,构建出动态字段。    // 相应的,在accountMapper.xml中用遍历出lineList,然后遍历map的value,构建出insert 的值    for (String key : dataMap.keySet()) {        lineColumn += key + ",";    }    // id不会自动递增,加上id字段    // 相应的,在accountMapper.xml中 用序列的nextval生成id    lineColumn += "id";    paramsMap.put("lineColumn", lineColumn);    paramsMap.put("table", "account");    paramsMap.put("lineList", lineList);    if (accountMapper.createAccount(paramsMap) > 0) {        System.out.println("创建成功");    }}

accountMapper.xml插入一个新用户的sql(使用oracle数据库)

<insert id="createAccount" parameterType="java.util.Map">    INSERT INTO ${table}(${lineColumn}) select result.*,seq.nextval id from(            <foreach collection="lineList" item="item" index="index" separator="union all">            (select                <foreach collection="item" index="key" item="_value" separator=","> #{_value}                </foreach>            from dual)          </foreach>    ) result</insert>
0 0
原创粉丝点击