mybatis批量update(mysql)
批量插入:
<insert id="batchInsert"> insert into testTable (id,content) values <foreach collection="list" item="item" index="index" separator="," > ( #{item.id}, #{item.content}, ) </foreach> </insert>
Mapper文件中的写法
<insert id="batchUpdateTjData"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> UPDATE test_table SET c_a = #{item.ca}, c_b = #{item.cb} WHERE id = #{item.id} </foreach> </insert>
这样写总是报错,调试了很长时间也没找到问题原因
最后找到这里http://my.oschina.net/jsonavaj/blog/265112 找到了答案
数据库的链接必须加上但是数据库连接必须加上 allowMultiQueries=true
url="jdbc:mysql://localhost:3306/testDatabase?allowMultiQueries=true" />
http://www.cnblogs.com/modprobe/p/4683274.html
利用MyBatis对数据库进行DDL(create table,drop table等等)操作
【具体代码】
1、mapper接口文件内容如下
/** * 执行备份数据库相关表的Mapper */ public interface BackupDataMapper { /** * 修改数据库的表名字 * @param originalTableName * @param newTableName * @return */ int alterTableName(@Param("originalTableName") String originalTableName, @Param("newTableName") String newTableName); /** * truncate指定数据库表的数据 * @param tableName * @return */ int truncateTable(@Param("tableName") String tableName); /** * 根据传入的表明,创建新的表并且将原表的数据插入到新的Occur表中 * @param newTableName * @param originalTableName */ void createNewTableAndInsertData(@Param("newTableName") String newTableName, @Param("originalTableName") String originalTableName); /** * 统计某张表中的总数据条数。 * @param tableName * @return 指定表中的总记录条数。 */ int getRecordCount(@Param("tableName") String tableName); /** * 获得当前数据库的名字 * @return */ String getCurDataBaseName(); /** * 从指定数据库中,查询是否存在某张表 * @param dataBaseName * @param tableName * @return */ String isTargetTableExistInDB(@Param("dataBaseName") String dataBaseName, @Param("tableName") String tableName); }
2、mapper.xml文件内容如下
<mapper namespace="com.dao.BackupDataMapper"> <update id="alterTableName"> alter table ${originalTableName} rename ${newTableName} </update> <update id="truncateTable"> truncate table ${tableName} </update> <update id="createNewTableAndInsertData"> create table ${newTableName} as select * from ${originalTableName} </update> <select id="getRecordCount" resultType="int"> select count(1) from ${tableName} </select> <select id="getCurDataBaseName" resultType="string"> select database(); </select> <select id="isTargetTableExistInDB" resultType="string"> SELECT table_name FROM information_schema.tables WHERE table_schema = #{dataBaseName} and TABLE_NAME = #{tableName} </select> </mapper>
3、注意点
在传入“表名”作为参数时,一定要使用“${tableName}”的格式,而不能使用“#{tableName}”的格式。因为表名是sql语法要求的一部分,而不是参数
http://www.cnblogs.com/zjrodger/p/5567085.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2015-08-16 和老师们合作,注定了是打工的(转)
2015-08-16 分布式中使用Redis实现Session共享(转)
2015-08-16 window.open的小技巧分享(转)
2015-08-16 Maven工程引入jar包(转)
2015-08-16 Finding awesome developers in programming interviews(转)
2015-08-16 使用Java快速实现进度条(转)
2015-08-16 Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)