当前位置: 首页 > wzjs >正文

做液压的公司网站南京网站建设

做液压的公司网站,南京网站建设,江苏建设人才网官网入口,如何看配色网站【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 这段代码是一个 MyBatis 的 Mapper XML 配置&#xff0c;实现了批量插入或更新视频文件信息的功能。下面详细解析这个 SQL 语句的各个部分&#xff1a; 1. 基本结构 <insert id"…

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版

这段代码是一个 MyBatis 的 Mapper XML 配置,实现了批量插入或更新视频文件信息的功能。下面详细解析这个 SQL 语句的各个部分:

1. 基本结构

<insert id="insertOrUpdateBatch" parameterType="com.easylive.entity.po.VideoInfoFilePost">INSERT INTO video_info_file_post(...) VALUES (...)ON DUPLICATE KEY UPDATE ...
</insert>

这是一个典型的 MyBatis 批量操作语句,使用了 MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 语法。

2. 插入部分详解

INSERT INTO video_info_file_post(file_id,upload_id,user_id,video_id,file_index,file_name,file_size,file_path,update_type,transfer_result,duration
) VALUES
<foreach collection="list" item="item" separator=",">(#{item.fileId},#{item.uploadId},#{item.userId},#{item.videoId},#{item.fileIndex},#{item.fileName},#{item.fileSize},#{item.filePath},#{item.updateType},#{item.transferResult},#{item.duration})
</foreach>

关键点:

<foreach> 标签:MyBatis 的循环标签,用于处理集合
collection="list":表示参数是一个 List 集合
item="item":定义循环变量名
separator=",":每次循环后用逗号分隔
#{} 表达式:MyBatis 的参数占位符,会预编译防止 SQL 注入
• 使用 item.属性名 访问集合元素的属性

3. 冲突更新部分详解

ON DUPLICATE KEY UPDATE
file_index = VALUES(file_index),
file_name = VALUES(file_name)

关键点:

ON DUPLICATE KEY UPDATE:MySQL 特有语法,当主键或唯一键冲突时执行更新
VALUES() 函数:引用 INSERT 语句中尝试插入的值
• 这里只更新了 file_indexfile_name 两个字段,其他字段保持不变

4. 完整逻辑流程

  1. 尝试批量插入多条记录到 video_info_file_post
  2. 如果某条记录的 file_id(假设是主键)已存在,则执行更新操作
  3. 更新时只修改 file_indexfile_name 字段
  4. 其他字段保持原值不变

5. 实际执行示例

假设传入的 List 包含两个元素:

List<VideoInfoFilePost> list = Arrays.asList(new VideoInfoFilePost("id1", "up1", "user1", "vid1", 1, "name1", 100, "path1", 0, 0, 100),new VideoInfoFilePost("id2", "up2", "user1", "vid1", 2, "name2", 200, "path2", 0, 0, 200)
);

生成的 SQL 语句类似:

INSERT INTO video_info_file_post(file_id, upload_id, user_id, video_id, file_index, file_name, file_size, file_path, update_type, transfer_result, duration
) VALUES
('id1', 'up1', 'user1', 'vid1', 1, 'name1', 100, 'path1', 0, 0, 100),
('id2', 'up2', 'user1', 'vid1', 2, 'name2', 200, 'path2', 0, 0, 200)
ON DUPLICATE KEY UPDATE
file_index = VALUES(file_index),
file_name = VALUES(file_name)

6. 设计考虑

  1. 性能优化:批量操作减少数据库往返次数
  2. 原子性:整个操作在一个事务中完成
  3. 灵活性:只更新需要变更的字段
  4. 幂等性:重复执行不会产生副作用

7. 使用场景

这种批量插入或更新操作特别适合:
• 初始化数据
• 批量导入
• 数据同步
• 需要处理大量记录的定时任务

8. 注意事项

  1. 确保表有主键或唯一键约束,否则 ON DUPLICATE KEY UPDATE 不会生效
  2. 大批量操作时可能需要分批处理,避免单条 SQL 过大
  3. 在高并发环境下注意锁竞争问题
http://www.dtcms.com/wzjs/433869.html

相关文章:

  • 注册微信号的网站网络运营培训班
  • 重庆网站建设齐重庆零臻科技国际最新消息
  • 58网站怎么做优化怀化网站seo
  • 北京做网站推广简述搜索引擎优化
  • 深圳网站建设便捷5118和百度指数
  • 商城网站前台html模板在线咨询 1 网站宣传
  • 精品在线开发网站建设百度seo服务
  • 网站建设的目的和意义模板建站平台
  • 培训网站建设机构企业官网定制设计
  • web在线网页代理百度蜘蛛池自动收录seo
  • 中国企业信息网官网seo工作内容有哪些
  • 合肥建设网站的公司seo手机排名软件
  • 建设银行社会四川招聘网站网页设计师
  • 好看的学校网站模板店铺推广方法
  • 金融手机网站开发小程序设计
  • 公司做网站 微信平台搜索关键词排名优化软件
  • 网页设计班级网站怎么做网站免费发布与推广
  • 手机网站如何做才能兼容性各种手机自媒体营销的策略和方法
  • 做网站选关键词汕头seo代理商
  • 写文章的网站安卓aso优化排名
  • 网站建设大题郑州seo排名第一
  • 怎么查一个地区的所有网站域名百度seo刷排名软件
  • 南京建设网站多少钱百度关键词排名原理
  • 网站建设 联系我们网站seo方案策划书
  • 门户网站建设 管理 自查报告超级seo外链工具
  • 企业年报系统登录入口关键词排名优化易下拉技巧
  • wordpress推介联盟seo怎么做优化
  • 基于html5的旅游网站的设计与实现中国纪检监察报
  • 网站建设助手 西部数码免费网络推广
  • 在工行网站上如何做现金理财网络服务主要包括什么