1. INSERT INTO tablename(field1,field2, field3, ...) VALUES(value1, value2, value3, ...) ON DUPLICATE KEY UPDATE field1=value1,field2=value2, field3=value3, ...;

INSERT INTO f_cameras (cameraname,cameraIndexCode) VALUES (?,?) ON DUPLICATE KEY UPDATE

cameraIndexCode= VALUES(cameraIndexCode),camername= VALUES(cameraname)

public void insertRegionList(List regionInfoData){

Log4JConfigureServlet.LOGINFO.info("insertRegionList start");

Log4JConfigureServlet.LOGINFO.info("regionInfoData.size()=" + regionInfoData.size());

List factoryList = new ArrayList<>();

List areaList = new ArrayList<>();

for (Region cc : regionInfoData){

if(cc.getParentIndexCode().equals("root000000")){

factoryList.add(cc);

}else if(!cc.getParentIndexCode().equals("-1")){

areaList.add(cc);

}

}

Log4JConfigureServlet.LOGINFO.info("factoryList==="+ JSON.toJSONString(factoryList));

Log4JConfigureServlet.LOGINFO.info("areaList===" + JSON.toJSONString(areaList));

Connection conn = null;

PreparedStatement pst = null;

PreparedStatement pst2 = null;

ResultSet rs = null;

try {

conn = DbUtil.getConnection();

if(conn!=null) {

conn.setAutoCommit(false);// 更改JDBC事务的默认提交方式

//cameraIndexCode设置为Unique索引

String sql = "INSERT INTO f_factory (factoryid,factory) " +

"VALUES (?,?) " +

"ON DUPLICATE KEY UPDATE " +

"factoryid= VALUES(factoryid)," +

"factory=VALUES(factory)";

String sql2 = "INSERT INTO f_areas (areaid,areaname,factoryid) " +

"VALUES (?,?,?) " +

"ON DUPLICATE KEY UPDATE " +

"areaid= VALUES(areaid)," +

"areaname=VALUES(areaname)," +

"factoryid=VALUES(factoryid)";

pst = (PreparedStatement) conn.prepareStatement(sql);

pst2 = (PreparedStatement) conn.prepareStatement(sql2);

Log4JConfigureServlet.LOGINFO.info("insertRegionList conn.prepareStatement(sql)");

for (Region cc:factoryList) {

pst.setString(1, cc.getIndexCode());

pst.setString(2, cc.getName());

pst.addBatch();

Log4JConfigureServlet.LOGINFO.info("insertRegionList pst.addBatch()");

}

for (Region cc:areaList){

pst2.setString(1, cc.getIndexCode());

pst2.setString(2, cc.getName());

pst2.setString(3, cc.getParentIndexCode());

pst2.addBatch();

Log4JConfigureServlet.LOGINFO.info("insertRegionList pst2.addBatch()");

}

pst.executeBatch();

pst2.executeBatch();

Log4JConfigureServlet.LOGINFO.info("insertRegionList pst.executeBatch()");

conn.commit();

conn.setAutoCommit(true);

Log4JConfigureServlet.LOGINFO.info("insertRegionList end");

}

} catch (Exception e) {

try {

if(conn!=null)

conn.rollback();

} catch (SQLException ex) {

ex.printStackTrace();

}

String error = e.getCause().getLocalizedMessage();

if (error == null) {

error = e.getCause().toString();

}

Log4JConfigureServlet.LOGINFO.info("操作数据库失败错误为 is " + error);

} finally {

DbUtil.close(rs, pst, conn);

}

}

springboot mapper.xml写法:insert into f_cameras (cameraname, cameraIndexCode)

values (#{cameraname,jdbcType=VARCHAR}, #{cameraIndexCode,jdbcType=VARCHAR})

ON DUPLICATE KEY UPDATE

cameraname=#{cameraa,jdbcType=VARCHAR},carNum=#{cameraIndexCode,jdbcType=INTEGER}, optTime=CURRENT_TIMESTAMP2.新建Unique索引当Unique索引栏位的原始值和插入值一样时,执行update。反之,执行insert

mysql 索引重复 更新_MySQL——ON DUPLICATE KEY UPDATE添加索引值实现重复插入变更update...相关推荐

  1. mysql插入并更新(on duplicate key update)

    Mysql插入数据,如果存在此数据,那么就更新这条数据,否则插入数据. 使用 on duplicate key update. 准备工作 建表 create table user_info(id in ...

  2. mysql innodb 索引 延迟更新_Mysql覆盖索引与延迟关联

    延迟关联:通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据. 为什innodb的索引叶子节点存的是主键,而不是像myisam一样存数据的物理地址指针? 如果存的是物理地址指针不就不 ...

  3. mysql的判断更新_mysql判断记录是否存在,存在则更新,不存在则插入

    向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求 ...

  4. mysql 配置执行计划_MySQL深入学习(二)--配置、索引、执行计划

    MySQL 一.MySQL 5.7 初始化配置 1.初始化数据并配置 # 1.初始化数据 /usr/local/mysql/bin/mysqld --initialize-insecure --use ...

  5. mysql锁表更新_Mysql InnoDB 数据更新导致锁表

    一.数据表结构 CREATE TABLE `jx_attach` ( `attach_id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DE ...

  6. mysql主键索引需要创建_mysql主键还需要建立索引吗?

    mysql主键不需要建立索引,主键具备索引的功能:当创建或设置主键的时候,mysql会自动添加一个与主键对应的唯一索引,不需要再做额外的添加.数据库管理系统对于主键会自动生成唯一索引,所以主键是一个特 ...

  7. mysql 子查询分页_MySQL子查询,正则表达式,索引,分页,三大范式

    子查询 可以将子查询放在许多的 SQL 子句中,包括: • WHERE 子句• HAVING 子句 • FROM 子句 使用子查询的原则 • 子查询放在圆括号中. • 将子查询放在比较条件的右边. • ...

  8. mysql解决丢失更新_mysql 数据丢失更新的解决方法

    最新看<innodb 引擎内幕>,作者有介绍丢失更新的问题,这里记录自己的想法和方案 --------------------------------------------------- ...

  9. mysql 走索引 很慢_MySQL 优化:为什么 SQL 走索引还那么慢?

    背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 core 分析过程 接手这个问题时现场已经不在了,信息有限,所以我们先从 ...

  10. mysql添加普通索引_mysql在建表语句中添加索引

    普通索引创建 创建普通索引,即不添加 UNIQUE.FULLTEXT 等任何参数. [例]创建表名为 score 的数据表,并在该表的 id 字段上建立索引,SQL 语句如下: CREATE tabl ...

最新文章

  1. typescript 叹号_TypeScript系列(五)最佳实践
  2. ajax图书管理案例
  3. (操作系统)实验二 作业调度
  4. 董小姐的空调不一定能当发电站,但牛放屁确实可以发电
  5. 成功解决AttributeError: module 'tensorflow.contrib.data' has no attribute 'TextLineDataset'
  6. 平面坐标(方里网)转换为经纬度坐标
  7. 如何用python完成基本统计信息计算_如何用python计算基本统计值?
  8. 基础接口 java_java基础中的 接口方法的问题
  9. Windows11 开发版bt磁力链种子及其他下载地址整理
  10. “35岁,我退休了”:关于中年危机,这是最靠谱的回答
  11. 测试Java Stream流 parralle与 sequential的效率
  12. [RFC6023] 互联网密钥交换版本 2 (IKEv2) 安全协会 (SA) 的Childless 初始化 (翻译)
  13. Activity到底是什么时候显示到屏幕上的呢?
  14. 多元线性回归matlab代码例题_matlab多元线性回归
  15. 山药多糖/香菇多糖/茯苓多糖/叶酸壳寡糖包封于PLGA纳米粒
  16. java中gettext()_java getText()
  17. 在ppt Excel world中 批量删除超链接
  18. 黑鹰坠落之战队之刃 全攻略
  19. JAVA编程中标识符的命名规则
  20. 「津津乐道播客」#387 津津有味:挑食不是病,想治挑食才是病

热门文章

  1. mysql创建jdbc数据库_创建本地数据库mySQL并连接JDBC
  2. Java基础:List集合和Set接口
  3. ubuntu opencv多版本控制
  4. 线性代数【五】向量(2):向量组的秩,向量内积、正交,正交规范化,向量空间
  5. karto探秘之slam_karto
  6. 基于点云的视觉引导系统
  7. MySQL 5.7安装配置方法
  8. [hdu4311]Meeting point-1
  9. poj 2513 欧拉回路+并查集推断是否联通+Trie树
  10. HBase 数据模型(Data Model)