欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-06 08:13:49
创建用户: /** * 创建一个或多个新用户 insert 字段和表名不确定时动态添加 */ @test public void createaccoun...

创建用户:

/**
* 创建一个或多个新用户 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 字段和表名不确定时动态添加问题,希望对大家有所帮助