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字段和表名不确定时动态添加问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!