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 字段和表名不确定时动态添加问题,希望对大家有所帮助