MyBatis万能插入语句

2023-11-12

MyBatis万能插入语句

前言

最近需要做一个动态新增数据的接口,表名、列名、数据都是动态传进来的

需要一个接口就可以把所有表数据新增成功

  • 第一种方式
    • 首先看Mapper(dao层)接口
        /**
         * 插入数据
         *  @param tableName    表名
         * @param tableColumns 列集合
         * @param dataList 数据集合
         */
        void insertTableData( @Param("tableName") String tableName,
                             @Param("columnList") List<String> columnList, 
                             @Param("dataList") List<List<String>> dataList);
    
    • 再看xml文件
        <!--  插入数据  -->
        <insert id="insertTableData">
            insert ignore into ${tableName}
            <foreach collection="columnList" item="column" open="(" separator="," close=")">
                `${column}`
            </foreach>
            values
            <foreach collection="dataList" item="item" separator="," >
                <foreach collection="item" item="column" open="(" separator="," close=")">
                    #{column}
                </foreach>
            </foreach>
        </insert>
    
  • 第二种方式
    • mapper(dao层)接口
        /**
         * 插入数据
         * @param tableName 表名
         * @param columnList 列
         * @param dataMap 数据
         */
        void insertTableData(@Param("tableName") String tableName, 
                        @Param("columnList") List<String> columnList, 
                        @Param("dataMap") List<Map> dataList);
    
    • xml文件
        <!--    插入数据-->
        <insert id="insertData">
            insert into ${tableName}
            <foreach collection="columnList" open="(" separator="," close=")" item="item">
                `${item}`
            </foreach>
            values
            <foreach collection="dataList" separator="," item="itemData">
                <foreach collection="itemData" open="(" separator="," close=")" item="item">
                    #{item}
                </foreach>
            </foreach>
        </insert>
    
SQL参数
  • 接口参数
参数名称 参数解释 类型
tableName 表名称 字符串
columnList 表字段集合 List和Map都可以
dataList 数据集合 List<List<Object>>或List<Map>>
  • 注意
    • 表名称必须使用 **${tableName}**方式取
    • 因为通常使用API方式获取数据,取出的数据经过JSON_FORMATTER,所有第二种插入数据的方式比较常用
    • 字段集合数必须和插入的数据数一致,否则报错
    • 字段顺序必须和数据顺序一致,否则出现串行

转载请注明地址:https://blog.csdn.net/m0_37887812/article/details/121098954

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis万能插入语句 的相关文章

  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 不兼容的类型:在 java netbeans 中对象无法转换为 String

    我试图在我的项目中使用对象数组 但出现错误 incompatible types Object cannot be converted to String 在这一行 ST1 new String emt1 emt2 emt3 emt4 现在
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu
  • 如何在动态查询中将行值连接到列名

    我正在开发一个允许配置问题和答案的应用程序 目前最多可以有 20 个答案 但也可能更少 我的结构如下 问题 ID FormId QuestionText AnswerField 1 1 Name Answer01 2 1 Address A
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑

随机推荐

  • ubuntu下Vim安装失败,报The following packages have unmet dependencies: vim : Depends: vim-common

    The following packages have unmet dependencies vim root ubuntu etc apt apt install vim Reading package lists Done Buildi
  • vscode

    01 vscode介绍使用 一 介绍 1 VScode是微软推出的一款轻量级的编辑器 采用了和VS相同的UI界面 2 界面介绍 左侧是用于展示所要编辑的所有文件和文件夹的文件管理器 依次是资源管理器 搜索 GIT 调试 插件 右侧是打开文件
  • LDA(Latent Dirichlet Allocation)主题模型算法

    LDA Latent Dirichlet Allocation 主题模型算法 LDA整体流程 先定义一些字母的含义 文档集合D topic集合T D中每个文档d看作一个单词序列 lt w1 w2 wn gt wi表示第i个单词 设d有n个单
  • const(一):(转) 一个函数名后面加const表示什么意思

    http zjw86212 blog 163 com blog static 116692085200910394324880 const用在成员函数后 主要是针对类的const对象 如 class Text public void pri
  • 嵌入式Linux开发环境搭建-2-制作编译工具

    嵌入式Linux开发环境搭建 2 制作编译工具 一 安装基本开发环境 1 1 build essential安装 1 2 bison和flex 4 3 安装C函数库的man手册 二 安装交叉编译工具链 2 1 相关软件下载 2 2 修改一个
  • 使用wxWidgets的wxGenericAboutDialog类

    使用wxWidgets的wxGenericAboutDialog类 wxWidgets是一个开源的C 图形用户界面库 用于跨平台的应用程序开发 它提供了丰富的GUI控件和工具 使开发者能够轻松地创建具有不同操作系统外观的应用程序 其中 wx
  • 利用GeoHash实现逆地理编码(经纬度坐标转换行政区划)

    目录 前言 理解GeoHash GeoHash精度 GeoHash特征 GeoHash规律 逆地理编码 实现逆地理编码的基本思路 1 全国范围内6位精度GeoHash计算 2 获取全国范围内区 县 三级市级别行政区划地址围栏点 3 计算6位
  • 监督学习和无监督学习

    文章目录 监督学习和无监督学习 监督学习算法包括 无监督学习算法包括 OpenCV十个子类 举例 监督学习和无监督学习 监督学习和无监督学习是机器学习领域中两种不同的学习范式 它们之间的区别在于数据的标签或标记的可用性以及学习任务的性质 监
  • Python_Logging日志模块(一)

    一 日志的作用 展现当前程序的活动情况 记录程序的运行轨迹 规范稳定的日志可以帮助开发者迅速定位程序的问题 二 日志的内容 正常情况下 一条完整的日志应该包含调用日志的时间戳 数字形式的日志级别 调用日志的实例化函数的路径 线程名 抛出的活
  • sheel脚本

    sheel脚本 sheel脚本 sheel脚本 sheel脚本的工作方式有两种 交互式和批处理 交互式 用户输入一条就立即执行 批处理 由用户实现编写好一个完整的sheel脚本 sheel会一次执行脚本中诸多命令 脚本中不仅会用到一般的li
  • 测试用例设计方法之等效类,边界值

    概念 等价类划分是一种黑盒测试方法 把无限的测试变成有限的测试 把所有可能的输入数据 即程序的输入域划分成若干等价类 然后从每一个等价类中选取少数具有代表性的数据作为测试用例 依据需求将输入 特殊情况下会考虑输出 划分为若干个等价类 从等价
  • 红帽linux认证有哪些方向

    红帽Linux认证有以下几个方向 RHCSA 红帽认证系统管理员 该认证是红帽认证中的初级认证 主要考察考生对Linux系统管理的掌握程度 包括系统安装 文件系统管理 用户和组管理 网络管理等 RHCE 红帽认证工程师 该认证是红帽认证中的
  • 高德地图定位

    高德地图开放平台 获取key 获取key值后 将其在index html中引入 然后来到App vue下 即根组件下 一进项目就可以获取定位 所以在钩子函数created 中实现定位功能
  • OpenAi 嵌入

    什么是嵌入 OpenAI 的文本嵌入衡量文本字符串的相关性 嵌入通常用于 搜索 结果按与查询字符串的相关性排序 聚类 其中文本字符串按相似性分组 推荐 推荐具有相关文本字符串的项目 异常检测 识别出相关性很小的异常值 多样性测量 分析相似性
  • 2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践

    2018 2019 2 网络对抗技术 20165322 Exp2 后门原理与实践 目录 实验准备 后门概念 常用后门工具 实验内容与步骤 使用netcat获取主机操作Shell cron启动 使用socat获取主机操作Shell 任务计划启
  • 阿里带火的中台到底是什么?白话中台战略

    作者 王健 ThoughtWorks首席咨询师 十多年国内外大型企业软件设计开发 团队组织转型经验 一直保持着对技术的热爱 热衷于技术分享 目前专注在企业平台化转型 中台战略规划 微服务架构与实施 大型遗留系统服务化改造 敏捷精益转型 以及
  • IOS工程添加目录

    问题 ios工程和资源工程是分开的 需要将工程外的一个文件夹导入到ios工程中 以前是直接拷贝一份放在frameworks runtime src proj ios mac中 这样操作的缺点就是 修改了公共的资源后 还需要再修改ios工程下
  • 微信小程序的computed的使用

    1 官方参考地址 computed 微信开放文档 qq com 2 自定义组件component和behaviors component参考地址 自定义组件 微信开放文档 qq com behaviors参考地址 behaviors 微信开
  • Solidity中引入的SPDX是什么

    Solidity中引入的SPDX是什么 起因 Solidity 0 6 8 要求引入 SPDX 许可证 否则会出现警告 Warning SPDX license identifier not provided in source file
  • MyBatis万能插入语句

    MyBatis万能插入语句 前言 最近需要做一个动态新增数据的接口 表名 列名 数据都是动态传进来的 需要一个接口就可以把所有表数据新增成功 第一种方式 首先看Mapper dao层 接口 插入数据 param tableName 表名 p