【mybatis】动态sql之批量增删改查

简介: 【mybatis】动态sql之批量增删改查

有时候公司的业务中存在批量新增、更新、删除、查询的需求,有的人直接在业务层循环去处理,效率低并且容易使服务宕机

动态sql

查询

dao层入参需要加 @Param(“userList”)

 select id from test
        where id in
        <foreach item="item" collection="userList" separator="," open="(" close=")" index="">
            #{item.id , jdbcType=VARCHAR}
        </foreach>

增加

 insert into Test(demoID, userId, createTime,
      "createUser", "type")
    values
    <foreach collection="testList" item="test" separator=",">
    (#{test.demoID,jdbcType=VARCHAR}, #{test.userId,jdbcType=VARCHAR}, #{test.createTime,jdbcType=TIMESTAMP},
      #{test.createUser,jdbcType=TIMESTAMP}, #{test.type,jdbcType=VARCHAR})
    </foreach>

修改

<update id="updateTest">
    <foreach collection="Test" item="Test"
      separator=";">
      update Test
      <set>
        <if
          test="Test.completionRatio != null and Test.completionRatio > 0">
          CompletionRatio = #{Test.completionRatio,jdbcType=DECIMAL},
        </if>
      </set>
      where id= #{Test.id}
    </foreach>
  </update>

删除

同查询

delete from test
        where id in
        <foreach item="item" collection="userList" separator="," open="(" close=")" index="">
            #{item.id , jdbcType=VARCHAR}
        </foreach>

问题

传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求

解决方案链接: https://jiannuan.blog.csdn.net/article/details/124014506

目录
相关文章
|
3月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
2月前
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != &#39;&#39;`与`name != null and name != &#39; &#39;`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
210 0
|
16天前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
98 5
|
3月前
|
XML Java 数据库连接
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
146 21
|
3月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
3月前
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
4月前
|
SQL XML Java
九、MyBatis动态SQL
九、MyBatis动态SQL
74 2
|
3月前
|
人工智能 Java 数据库连接
MyBatis Plus 使用 Service 接口进行增删改查
本文介绍了基于 MyBatis-Plus 的数据库操作流程,包括配置、实体类、Service 层及 Mapper 层的创建。通过在 `application.yml` 中配置 SQL 日志打印,确保调试便利。示例中新建了 `UserTableEntity` 实体类映射 `sys_user` 表,并构建了 `UserService` 和 `UserServiceImpl` 处理业务逻辑,同时定义了 `UserTableMapper` 进行数据交互。测试部分展示了查询、插入、删除和更新的操作方法及输出结果,帮助开发者快速上手 MyBatis-Plus 数据持久化框架。
163 0
|
3月前
|
SQL XML Java
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
84 0
|
5月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
532 6