当前位置: 移动技术网 > IT编程>开发语言>Java > mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

创建用户:

/**
* 创建一个或多个新用户 insert 字段和表名不确定时动态添加
*/
@test
public 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>

以上所述是小编给大家介绍的mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网