IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mybatis 的sql 写法与mysql实现批量插入 -> 正文阅读

[大数据]mybatis 的sql 写法与mysql实现批量插入

我们可以写好几句sql后用的写法来进行直接查找

<sql id="sqlwhereSearch">
   <where>
      <if test="configId !=null">
         and config_id = #{configId}
      </if>
      <if test="configKey !=null and configKey != ''">
         and config_key = #{configKey}
      </if>
   </where>
</sql>
   
   <select id="selectConfig" parameterType="SysConfig" resultMap="SysConfigResult">
       <include refid="sqlwhereSearch"/>
   </select>

对于mysql的like而言一般都要使用like concat组合,可以防止sql注入,并且查找起始时间的时候可以使用date_format来进行查找时间

<select id="selectConfigList" parameterType="SysConfig" resultMap="SysConfigResult">
      <include refid="selectConfigVo"/>
      <where>
   <if test="configName != null and configName != ''">
      AND config_name like concat('%', #{configName}, '%')
   </if>
   <if test="configType != null and configType != ''">
      AND config_type = #{configType}
   </if>
   <if test="configKey != null and configKey != ''">
      AND config_key like concat('%', #{configKey}, '%')
   </if>
   <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
      and date_format(create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
   </if>
   <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
      and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
   </if>
</where>
  </select>

可以使用foreach标签将一个数组进行封装后用sql进行查询或者删除

mapper

/**
 * 批量删除参数信息
 * 
 * @param configIds 需要删除的参数ID
 * @return 结果
 */
public int deleteConfigByIds(Long[] configIds);
<delete id="deleteConfigByIds" parameterType="Long">
    delete from sys_config where config_id in 
    <foreach item="configId" collection="array" open="(" separator="," close=")">
       #{configId}
    </foreach>
</delete>

批量插入

MySQL JDBC 驱动在默认情况下会无视 executeBatch() 语句,把我们期望批量执行的一组 sql 语句拆散,一条一条地发给 MySQL 数据库,批量插入实际上是单条插入,直接造成较低的性能。将 rewriteBatchedStatements 参数置为 true, 数据库驱动才会帮我们批量执行 SQL

spring.datasource.url=jdbc:mysql:///batch_insert?serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true

然后直接使用for循环而不是拼接sql性能会提高不少

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:08:56  更:2022-06-29 19:11:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 18:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码