Mybatis的批量更新
Mybatis的批量插入这里有http://ljhzzyx.blog.163.com/blog/static/38380312201353536375/。目前想批量更新,如果update的值是相同的话,很简单,组织
update table set column='...' where id in (1,2,3)l
这样的sql就可以了。Mybatis中这样写就行
<update id="batchUpdateStudentWithMap" parameterType="java.util.Map" >
UPDATE STUDENT SET name = #{name} WHERE id IN
<foreach collection="idList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
但是这样的需求很少,一般是有个集合,每个元素中的值是不一样的,然后需要一次性更新。一般的处理方式是使用for循环。这样的效率较低,当数据量大时,期望有种一次性插入的操作。如果使用的是mysql,有
insert into table (aa,bb,cc) values(xx,xx,xx),(oo,oo,oo) on duplicate key update
和
replace into table (aa,bb,cc) values(xxx,xxx,xxx),(ooo,ooo,ooo),(ccc,ccc,ccc)
两种方式可以处理。
当前数据库是oracle,可以使用case when来拼成一长串sql处理
UPDATE mytable
SET myfield = CASE id
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3)
实际上这种方式对于mysql也有效。
最开始的时候,想着写一系列并列的更新语句就可以了
<update id="updateBatch" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";"
open="" close="">
update REGION_CODE set
CODE=#{item.Code,jdbcType=VARCHAR},
NAME=#{item.Name,jdbcType=VARCHAR}
where ID = #{item.id,jdbcType=DECIMAL}
</foreach>
</update>
这样直接报错,因为Mybatis映射文件中的sql语句不允许 ; 符号。按照可行的case when处理方式,Mybatis映射文件书写方式如下:
<update id="updateBatch" parameterType="java.util.List">
update REGION_CODE set
CODE=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=DECIMAL} then #{item.Code,jdbcType=VARCHAR}
</foreach>
,NAME=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=DECIMAL} then #{item.Name,jdbcType=VARCHAR}
</foreach>
where ID in
<foreach collection="list" index="index" item="item" separator="," open="(" close=")">
#{item.id,jdbcType=DECIMAL}
</foreach>
</update>
至此,批量更新功能完成。
总结:批量更新的时候,用;号结束不行。
http://ljhzzyx.blog.163.com/blog/static/38380312201482434852742/
相关推荐
3. **增强型Mapper接口**:在原有Mybatis的基础上,MybatisX添加了一些便捷的方法,如分页查询、批量插入、批量更新等,使Mapper接口功能更加强大。 4. **数据权限控制**:MybatisX支持基于角色的数据权限控制,...
Mybatis Plus v3.5.3.2 版本可能包含了性能优化、Bug修复以及新的特性,使用这个版本可以确保享受到最新的功能和改进。在实际项目中,结合 Mybatis Plus 可以让数据库操作变得更加便捷高效,同时保持代码的整洁和可...
- 对MyBatis的文档进行了更新,为开发者提供了更详尽的使用指南。 在使用mybatis-3.4.5.jar包时,开发人员需要注意以下几点: 1. 配置MyBatis的全局配置文件(mybatis-config.xml),设置数据源、事务管理器等相关...
1. **版本更新**:MyBatis 3.5.6是MyBatis的一个稳定版本,它可能会包含对前一版本的bug修复、性能优化以及新的功能添加。了解这个版本的变更日志,可以帮助开发者更好地利用新特性,避免已知问题。 2. **XML配置与...
MyBatis的每个版本都可能包含一些新功能、性能优化或者bug修复,因此升级到最新版本有助于提高项目的稳定性和兼容性。 描述中的"mybatis-3.4.5.zip和mybatis-3.4.5的资源文件统一下载"表明,除了核心库的jar包外,...
它有简单执行器、复用执行器和批量执行器三种类型,分别适用于不同的场景。 7. **ParameterHandler**: ParameterHandler负责处理SQL参数,将Java对象转化为数据库能理解的格式。 8. **ResultSetHandler**: ...
7. **MyBatis-Plus**:这是一个基于MyBatis的增强工具,简化了常见的CRUD操作,提供了丰富的API,包括条件构造器、批量操作、分页查询等,让开发更加便捷。 MyBatis 3.5.4可能包含以下更新和改进: - 性能优化:...
MyBatis提供了插入(Insert)、删除(Delete)、更新(Update)和查询(Select)的功能,支持单条和多条数据的操作。查询分为查询一条数据和查询多条数据。 **4. MyBatis核心配置文件详解** 核心配置文件包括...
10. **兼容性和稳定性**:1.3.3版本在保持对老版本API兼容的同时,修复了已知的bug,增强了框架的稳定性和兼容性,确保在不同环境下都能稳定运行。 总之,MyBatis-1.3.3增强版本是Java开发者处理数据库操作的强大...
- **BatchExecutor**:批量执行器,支持批处理操作,对于多条插入、更新操作,它会一次性提交所有SQL,显著提升效率。 Executor的工作流程如下: 1. **预处理SQL**:根据SQL语句和参数,创建PreparedStatement对象...
3. **SqlSession**:SqlSession对象是MyBatis的会话,负责与数据库进行交互,包括查询、插入、更新和删除等操作。 4. **Executor(执行器)**:执行器是MyBatis内部处理SQL的组件,它负责执行SQL语句并返回结果。 ...
【自动生成Entity Mapper Service文件】Mybatis-plus(Mybatis增强工具包) v3.3.2更新日志分页参数提取,单元测试用例修复 达梦数据库代码生成器表过滤支持 微软数据库代码生成器表过滤支持 修复代码生成器属性...
出现的Bug 如图,我开始复制delete语句和参数到数据库执行,删除两条数据,但是后台执行...mybatis中的代码 <!-- 批量删除--> []> <![CDATA[ DELETE FROM p_customer WHERE customerId in ]]> <for
4. 批量操作:支持批量插入、更新和删除,提高数据库操作性能。 5. 自定义Mapper扩展:如果通用Mapper提供的功能不能满足需求,可以通过自定义Mapper进行扩展。 三、通用Mapper的使用步骤 1. 引入依赖:在项目的pom...
- 使用MyBatis时,可利用批处理注解如`@InsertProvider`或`@UpdateProvider`实现批量操作。 6. **AOP(面向切面编程)的应用**: - AOP广泛用于日志记录、权限控制、缓存管理、异常处理、性能优化等多个场景,...
- **批量更新支持**:通过`batch()`方法可以方便地实现SQL语句的批量执行,显著提升执行效率。 - **查询结果转换**:支持将查询结果转换为不同的数据结构(如List、Map等),便于进一步处理。 - **错误处理改进**:...
一直以来根据数据库表...5、MyBatis配置界面新增根据所有字段条件查询数据的选项。 6、新增TableGo使用说明书。 7、更新数据库驱动版本,新版的驱动可能不支持JDK8以下的版本。 8、修复了大量的Bug并进行了一些优化。
3. MyBatis动态SQL:利用MyBatis的动态SQL功能,实现灵活的数据查询和更新。 4. JWT(JSON Web Token)认证:实现用户身份验证,提高安全性。 5. 异步处理:使用SpringBoot的Async注解,实现异步任务,提高系统响应...
- 批量操作:支持单表或多表的批量插入、更新、删除。 **6. 旅游网站功能模块** - 用户模块:用户注册、登录、个人信息管理。 - 旅游线路模块:展示旅游线路,包括线路详情、图片、价格等信息。 - 预订模块:用户...
"更新记录.docx"文件可能是项目开发过程中对SpringJdbcTemplate封装工具类的修改日志,记录了每次更新的功能改进、bug修复或性能优化等内容,这对于版本管理和问题排查非常有帮助。 通过上述分析,我们可以看到...