创建用户:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/**
* 创建一个或多个新用户 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数据库)
1
2
3
4
5
6
7
8
9
10
|
<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 字段和表名不确定时动态添加问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://blog.csdn.net/laowangwsy/article/details/56274757