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

创建用户:

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

(0)

相关推荐

  • Oracle+Mybatis的foreach insert批量插入报错的快速解决办法

    最近做一个批量导入的需求,将多条记录批量插入数据库中. 解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入.期间遇到了"SQL 命令未正确结束 "的错误,最终解决,记录下来供以后查阅和学习. 首先,在网上参考了有关Mybatis的foreach insert的资料,具体如下: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach

  • Mybatis 中的insertOrUpdate操作

    下面一段代码给大家介绍了Mybatis 中的insertOrUpdate操作,具体代码如下所示: <insert id="insertOrUpdate"> insert into base_person (pname, idcard, gender, nation, source_flag, create_time) values <foreach collection="list" item="p" index="i

  • MyBatis在insert插入操作时返回主键ID的配置(推荐)

    很多时候,在向数据库插入数据时,需要保留插入数据的id,以便进行后续的update操作或者将id存入其他表作为外键. 但是,在默认情况下,insert操作返回的是一个int值,并且不是表示主键id,而是表示当前SQL语句影响的行数... 接下来,我们看看MyBatis如何在使用MySQL和Oracle做insert插入操作时将返回的id绑定到对象中. MySQL用法: <insert id="insert" parameterType="com.test.User&qu

  • MyBatis中insert操作返回主键的实现方法

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="

  • oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert

    最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰. 先来看一下最终我是怎么实现的: <insert id="batchInsertLine" parameterType="HashMap"> <![CDATA[ INSERT INTO tg_fcst_lines(${lineColumn}) select result.*,sq_fcst_lines.next

  • MyBatis批量插入(insert)数据操作

    在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179

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

    创建用户: /** * 创建一个或多个新用户 insert 字段和表名不确定时动态添加 */ @Test public void createAccount() { String lineColumn = ""; Map<String, Object> paramsMap = new HashMap<String, Object>(); Map<String, Object> dataMap = new HashMap<String, Obje

  • 一步步教你用Vue.js创建一个组件(附代码示例)

    目录 前言 到底什么是组件? 为什么你一定要使用组件 在Vue中创建一个组件 模板部分 脚本部分 选项API:旧的方式 合成API:现在和未来 风格部分 总结 前言 Vue.js是一个渐进式框架,旨在以一种非常简单.直接的方式构建用户界面.它被设计成易于使用,并且足够灵活,可以处理各种各样的应用. 在本教程中,我们将向你展示如何用Vue.js创建一个简单的组件.我们还将介绍一些在使用组件时需要知道的基本概念. 我们将介绍在Vue中创建一个组件的基本语法,以及一些关于组件用途的理论.在这篇文章的最

  • PostgreSQL用户、数据库及表的管理、操作与授权方式

    摘要 PostgreSQL的常用命令 1.登录数据库 /* 切换到数据库用户 */ su - postgres /* 登录 */ psql 登录成功显示如下: bash-4.2$ psql psql (9.3.17) Type "help" for help. postgres=> 2.切换数据库 /* 登录指定数据库 */ psql -U user -d dbname /* 列举数据库 */ \l /* 切换数据库 */ \c dbname 3.用户管理 /* 创建用户 */

  • Windows2008快速创建新用户方法

    默认安装Windows Server 2008是采用系统默认的Administrator系统超级管理员帐户.平时使用系统超级管理员帐户容易遭受病毒木马的攻击,最重要的是无法充分发挥Windows 2008新的安全功能UAC 用户帐户管理.由于Win2008采用全新的用户界面,类似Windows Vista创建新用户的方法有些烦琐.Vista地带告诉你一种新的方法创建系统管理员. 在Windows Server 2008开始菜单中输入 cmd 打开命令提示符,我们输入net user <用户名>

  • centos 7中添加一个新用户并授权的步骤详解

    前言 最近在笔记本装了一个centos,想要让别人也可以登录访问,用自己的账号确实不太好,于是准备新建一个用户给他.发现网站这方便的资料比较少,所以将自己实现的步骤总结分享出来,话不多说了,来一起看看详细的介绍: 创建新用户 创建一个用户名为:zhangbiao [root@localhost ~]# adduser zhangbiao 为这个用户初始化密码,linux会判断密码复杂度,不过可以强行忽略: [root@localhost ~]# passwd zhangbiao 更改用户 zha

  • Linux中创建新用户并赋予指定目录的相关权限

    1 创建用户且指定该用户的根路径和密码 useradd -d /home/mydir -m username 这种方式创建的用户可以使用ssh登录,但只有只读权限可以浏览下载部分文件无法写和修改. 建议通过将用户加入一个组来获得指定路径的权限. 2 设置密码 passwd username 3 用户授权 chown -R username: username /home/ mydir chmod 755 /home/mydir 4 将用户加入到组 将一个用户添加到用户组中,尽量不要直接用(除非确

  • IDEA 创建一个Mybatis Maven项目的方法步骤(图文)

    第一步:先新建一个工程 直接next就行了,不用选内容,不然他会下载骨架会卡很久 第一个箭头是项目名称,第二个箭头是项目路径,根据自己需要修改就行了.新建好的项目是这样的. 第二步:我们需要添加一个web框架支持 右键你的项目然后选择Add Framework那一项. 选中Web Application点击ok. 这样项目结构就有了,重点是啥都不用调了很方便. 第三步:去配置Tomcat 选择Tomcat Server下面的Local 这里选择你的Tomcat在哪里 按照箭头步骤来从上到下把工程

  • MyBatis入门实例教程之创建一个简单的程序

    准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8 新建表: USE mybatisdemo CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL, uage INT NOT NULL ); INSERT INTO users(uid,

  • jquery创建一个新的节点对象(自定义结构/内容)的好方法

    HTML 复制代码 代码如下: <!DOCTYPE html> <html> <head> <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <meta charset=utf-8 /> <title>JsBin-在线js/css调试工具&

  • 在机上创建一个用户的批处理

    说明:在dos下在机子上创建一个用户,并将该用户提升为管理员权限 复制代码 代码如下: @echo off net  user  mybat  mybat /add net  localgroup administrators mybat /add exit

随机推荐