服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题

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

2020-08-15 17:45喵喵喵sy Java教程

这篇文章主要介绍了mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下

创建用户:

?
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

延伸 · 阅读

精彩推荐