mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题
创建用户:
/** *创建一个或多个新用户insert字段和表名不确定时动态添加 */ @Test publicvoidcreateAccount(){ StringlineColumn=""; Map<String,Object>paramsMap=newHashMap<String,Object>(); Map<String,Object>dataMap=newHashMap<String,Object>(); //map的key值为字段,value为需要insert用户的值。一个map即是一个新用户 List<Map<String,Object>>lineList=newArrayList<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(Stringkey: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数据库)
<insertid="createAccount"parameterType="java.util.Map"> INSERTINTO${table}(${lineColumn})selectresult.*,seq.nextvalidfrom( <foreachcollection="lineList"item="item"index="index"separator="unionall"> (select <foreachcollection="item"index="key"item="_value"separator=",">#{_value} </foreach> fromdual) </foreach> )result </insert>
以上所述是小编给大家介绍的mybatis创建一个或多个新用户insert字段和表名不确定时动态添加问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!