如何在mybatis中使用 ON DUPLICATE KEY UPDATE写代码

MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入 基本用法:ON DUPLICATE KEY UPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突(即已存在相同的唯一键值),则会执行更新操作,而不是抛出异常或忽略该条数据。这个语法可以大大简化我们的代码,减少不必要的判断和查询操作。用法总结1:on duplicate key update 语句根据主键id或唯一键来判断当前插入是否已存在。2:记录已存在时,只会更新on duplicate key update之后指定的字段。 阅读详情

XML SQL 实现

IRedisDataVersionHistoryCustD1Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.outapi.bigdata.unit.provider.dao.mapper.IRedisDataVersionHistoryCustD1Mapper">
    <insert id="upsert" parameterType="java.util.List" useGeneratedKeys="true">
        INSERT INTO redis_data_version_history_d1 (
            redis_key,
            version,
            table_name,
            state
        ) VALUES
         <foreach collection="tables" item="table" separator=",">
            (
            #{table.redisKey,jdbcType=VARCHAR},
            #{table.version, jdbcType=INTEGER},
            #{table.tableName, jdbcType=VARCHAR},
            #{table.state, jdbcType=INTEGER}
            )
        </foreach>
        ON DUPLICATE KEY UPDATE
        version =VALUES(version),
        state = VALUES(state)
    </insert>
</mapper>

JAVA interface mapper

mapper interface 定义
IRedisDataVersionHistoryCustD1Mapper.Java
注意让main方法去扫描这些mapper定义接口

package com.xxx.outapi.bigdata.unit.provider.dao.mapper;
import java.util.List;
import com.xxx.outapi.bigdata.unit.provider.dao.model.generator.RedisDataVersionHistoryD1;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface IRedisDataVersionHistoryCustD1Mapper {
    int upsert(@Param("tables") List<RedisDataVersionHistoryD1> tables);
}

DAO JAVA

DAO interface定义

IRedisDataVersionHistoryD1Dao.java

package com.xxx.outapi.bigdata.unit.provider.dao;
import java.util.List;
import com.xxx.outapi.bigdata.unit.provider.dao.model.generator.RedisDataVersionHistoryD1;
public interface IRedisDataVersionHistoryD1Dao {
    int upsert(List<RedisDataVersionHistoryD1> table);
}

DAO实现类

RedisDataVersionHistoryDao1Impl.java

package com.xxx.outapi.bigdata.unit.provider.dao.impl;
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
import static org.mybatis.dynamic.sql.SqlBuilder.isGreaterThan;
import static org.mybatis.dynamic.sql.SqlBuilder.isIn;
import static org.mybatis.dynamic.sql.SqlBuilder.isNotEqualTo;
import java.util.*;
import com.xxx.outapi.bigdata.unit.provider.dao.IRedisDataVersionHistoryD1Dao;
import com.xxx.outapi.bigdata.unit.provider.dao.mapper.IRedisDataVersionHistoryCustD1Mapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Slf4j
public class RedisDataVersionHistoryDao1Impl implements IRedisDataVersionHistoryD1Dao {
    @Autowired
    private IRedisDataVersionHistoryCustD1Mapper custMapper;

    @Override
    public int upsert(List<RedisDataVersionHistoryD1> table) {
        return custMapper.upsert(table);
    }
}

JAVA Main 方法

注意

  1. 在main class加入 @MapperScan({“com.xxx.outapi.bigdata.unit.provider.dao.mapper.**”})
    让spring boot去扫描mapper定义类的目录(那些带有@Mapper的java类型)
  2. 包含SQL实现的XML mapper实现文件放在 resource 目录下
@Import({LogAspect.class, TraceIdUtils.class})
@MapperScan({"com.xxx.outapi.bigdata.unit.provider.dao.mapper.**"})
@SpringBootApplication(exclude = {
        DataSourceAutoConfiguration.class,
        RedisAutoConfiguration.class,
        RedisRepositoriesAutoConfiguration.class
})
@EnableApolloConfig
@EnableMetric
@EnableFeignClients
@EnableRetry
@EnableScheduling
public class UnitBigdataOutapiProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(UnitBigdataOutapiProviderApplication.class, args);
        System.out.println("==========spring start end========");
    }
移动通信基础(13)TDL、CDL、信道相关性 参考《U型槽无线信道多径传播特性测量与建模方法的研究》、《5G信号源中的信道模拟与仿真研究》衰落衰落理解为信号幅度在时间和频率上的不断波动,是无线信道一个重要的恶化特性。信道幅度恶化的两个主要来源分别是加性噪声和信号衰落,高斯白噪声信道模型就是典型的加性噪声,信号衰落引起的是乘性的信号扰动,与加性噪声从原理上完全不同。信道的频率选择性衰落组为无线信道的重要特征之一,是人们进行无线系统设计考虑的重要因素,决定了导频隔间的大小。... 阅读详情

相关推荐

TensorRT-LLM环境配置避坑指南:从安装到实战

本文是一份详尽的TensorRT-LLM环境配置避坑指南。文章重点解析了从Python、CUDA、PyTorch版本选择,到解决mpi4py安装这一核心难题的完整流程,并提供了经过验证的稳定版本组合与实战排错方案,帮助开发者高效部署大语言模型推理优化环境。

a0b1c2d3的专栏 983

springboot-mybaits 的 on duplicate key update 批量insert

在mybaits中使用insert into xx values(xxx) on duplicate key update 前提是数据库数据表设置唯一主键: dao层: public void batchAddOperateTaskTotal(@Param("operateTaskStatisticsList") List<DailyOperateTaskStati...

健康平安的活着的专栏 3997

Vensim系统动力学建模实战:从理论到仿真优化【案例详解】

本文详细介绍了Vensim在系统动力学建模中的实战应用,从基础理论到仿真优化全面解析。通过人口增长、供应链库存优化等典型案例,展示如何利用Vensim构建动态模型并进行参数优化,帮助读者掌握系统动力学建模的核心技术与实践技巧。

weixin_29231725的博客 476

Mybatis中的<foreach>以及MySQL中的ON DUPLICATE KEY UPDATE

这是MyBatis的foreach标签,用于遍历一个集合(这里假设是名为list的集合)。对于集合中的每个元素,都会执行一次内部的SQL片段。看到了一段同事写的代码,没见过其中的ON DUPLICATE KEY UPDATE,自己搜了一下,记录下来。:对于集合中的每个元素,这部分将生成一个值对列表,用于插入或更新操作。是MyBatis的参数占位符,用于从当前遍历到的元素中获取属性值。指定了更新操作,即将现有记录的字段值更新为尝试插入的值。定义了集合中每个元素的别名,用于在内部SQL片段中引用。

weixin_45951955的博客 541

RK3588部署rtmpose模型

摘要: 本文详细介绍了在RK3588开发板上部署RTMPose模型的全流程。首先在Ubuntu环境中搭建MMCV框架,通过MMPose工具将PTH模型转换为ONNX格式。随后使用RKNN-Toolkit2将ONNX模型转换为RKNN格式,并完成开发板部署。关键步骤包括模型转换(PTH→ONNX→RKNN)、环境配置和推理验证,最终实现人体姿态估计功能。整个过程涉及MMPose、RKNN-Toolkit等工具链的使用,为边缘计算场景下的实时姿态分析提供了可行方案。

qq_44224801的博客 1219

用废旧汽车电池DIY家用UPS:手把手教你低成本搭建Wi-Fi不断电系统

本文详细介绍了如何利用废旧汽车电池DIY低成本家用UPS系统,确保Wi-Fi设备在断电时持续供电。通过精选材料、电路搭建和安全防护,实现高效稳定的电源转换与智能切换,成本仅为市售UPS的三分之一。特别适合家庭办公和远程工作者提升网络供电可靠性。

weixin_29200485的博客 464

如何实现mysql数据库批量更新与添加(ON DUPLICATE KEY UPDATE)

如何实现mysql数据库批量更新与添加(ON DUPLICATE KEY UPDATE) 代码 #code INSERT TABLE ( ORDER_ID, TOTAL, REMAIN, CREATE_TIME, MODIFY_TIME, MODIFY_BY, DELETED ,AVAILABLE) VALUES &lt;foreach collection=...

造梦先森的博客 2826

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 370

2019-07-25 记录一个bug,插入更新sql-ON DUPLICATE KEY UPDATE

以前没写过ON DUPLICATE KEY UPDATE,写了一个插入更新,写错了,把ON DUPLICATE KEY UPDATE写在for循环里,也没写values,不知道为啥之前没测试出来,赶紧记录一下 错误: <foreach collection="list" index="index" item="item" separator=","> ...

hq091117的博客 442

FPGA/IC 秋招笔试/面试题总结

文章目录一、FPGA内部资源1. 什么是FPGA2.FPGA内部资源二、同步时钟、同步/异步电路1.同步时钟2.同步/异步电路三、同步复位/异步复位1.同步复位2. 异步复位3. 异步复位同步释放四、同步FIFO/异步FIFO1.同步FIFO2.异步FIFO五、FIFO最小深度计算1.FIFO最小深度2.示例分析六、逻辑电平1.TTL电平标准2.LVTTL电平标准3.CMOS电平标准4.LVCOMS电平标准5.RS2326.RS4857.ECL、PECL、LVPECL8.LVDS9.CML10.GTL11

Crazzy_M的博客 4万+

30 中望CAD二次开发(ZRX C++)-windows下的qt开发

本文介绍了中望CAD在windows下,如何使用qt开发插件界面,给出了具体的编码步骤,并生成了模态对话框和非模态对话框,其中非模态对话框可以调用CAD命令,实现交互操作。

cilvsuanna的博客 189

Mybatis学习笔记:实现insertOrUpdate

环境 Intellij IDEA : 2021.3 Mysql:8+ java:1.8+ 前言 以前使用mongodb、JOOQ组件的时候都是有insertOrUpdate的功能,现在使用mybatis似乎没有提供这种功能。 最近研究了,这个功能其实是mysql提供的,利用的是duplicate key update; 假设,我们有这么一张表: CREATE TABLE `relation` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',

山鬼谣的专栏 8810

芯擎SEC1000芯片参数详细介绍

随着龙鹰一号的不断进化和应用,未来的智能座舱将不仅仅是显示和控制的集成,更是人与车之间的一种默契和无缝交互的体现。在汽车行业迈向智能化和电动化的浪潮中,座舱已不仅仅是一个驾驶者的操作空间,而是逐渐演变为一个集娱乐、信息、控制于一体的智能交互平台。今天的汽车不仅需要强劲的动力和炫酷的外观,更需要一颗强大而智能的“心脏”来支撑复杂的座舱体验和安全驾驶需求。想象一下,未来的汽车不再仅仅是交通工具,它将成为你的移动私人管家,了解你的习惯,甚至提前预测你的需求。让我们一起走进龙鹰一号的世界,探索智能座舱的无限可能!

weixin_43199439的博客 1722

【mysql】on duplicate key update

1 on duplicate key update 在向数据库进行插入数据时,字段有唯一索引,并且插入的数据和数据库已存在的数据有唯一性冲突,这时会报 唯一字段异常; 解决办法: 1、 先根据唯一性先对表进行查询,如果存在,则不插入,不存在,则保存(这种方法仅仅限于单条数据插入); // 比如User 对象中的username是唯一性字段 public int add(User model) { User temp = dao.selectByUsername(model.getUsername());

qiaziliping的博客 1204

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Mybatis insert如何返回正确返回id,没有文章能说清楚么?

大家好,我是道哥,专注于后端java开发,喜欢写作和分享。如果觉得文章对你有用,那就点个赞呗!如果能转发那是对道哥最大的支持! 这次真是和Mybatis刚上了,来了个三连都是Mybatis文章,????,希望你能用到。 背景 我们经常有这种需求,我插入了一条记录,插入成功之后给我返回一个id呗,代表插入成功了,同时也代表我新插入的这条记录在数据库中的id。 还是以简化的goods_info表为例...

1355

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Mybatis 有则更新,无则插入的实现

想插入数据库一条记录,如果这条记录的主键或者Unique键已存在,则更新这条记录,如果主键或Unique键不存在,则新增这条记录。用Mybatis实现。网上有些方法说用replace into,但是mybatis是不支持的。所以,必须使用ON DUPLICATE KEY UPDATE。 &lt;insert id="insertUser" useGeneratedKeys="true" ke...

definitly的专栏 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mysql on duplicate key update用法,注意三点就能上手

Mysql on duplicate key update用法,注意三点就能上手

qq_35499112的博客 638

mybatis 批量插入:有则更新无则新增

代码段: <insert id="insertASPQDetailList" useGeneratedKeys="true" keyProperty="pqdetailno"> insert into ASPQDetail (PQtitleNO,PQPO,MatnrID,MEINSID,Menge,Price) values <foreach item="item" collection="list" sepa.

weixin_39293537的博客 1259

mybatis使用批量更新以及有则更新无则插入

1、mybatis批量更新使用foreach 代码如下: @Update("&lt;script&gt;" + "&lt;foreach collection='list' separator=';' item='user' &gt;" + "UPDATE users SET " + "ROBOT_COUNT=#...

m0_37897396的博客 7435

mysql 中 insert on duplicate key update 的用法

处理很多大数据量插入重复数据有唯一键时使用,这种用法只能用于mysql中,其他数据库不适用 1、在xml文件中常用写法: <update id="UPDATE_HOTEL_COUNTY_DISTRICT" parameterType="java.lang.String"> INSERT INTO VST_SEARCH_PROD_HOTEL(PRODUCT_...

向晚歌 111

mybatis 模糊查询

方式1: $连接符 &lt;select id="selectAll" parameterType="java.lang.String" resultMap="BaseResultMap"&gt; select &lt;include refid="Base_Column_List" /&gt; from data_role &lt;where&gt; ...

leexiehui的博客 158

mybatis/mysql-高级insert

好东西都是要拿出来分享的,最近在做的项目,有这样的需求 1.处理大量数据的插入(Replace into) 分析:A: 数据量大 ——》尽量减少连接mysql的次数(非常耗时),一次性插入。 B:数据可能有重复 ——》如果你采用先查出数据库所有的数据,再重写hashcode和equal用set集合进行重复过滤,难免也有

csdn_ygy的博客 520

MySql -- 不存在则插入,存在则更新或忽略

1.前言 Mysql在插入数据时,需要忽略或替换掉重复的数据(依据某个字段,比如Primary Key或 Unique Key),这时候我们既可以在应用层处理,也可以使用复杂的 SQL 语句来处理(如果仅仅知道一些简单的 SQL 语法的话),当然也可以使用一些简单的 SQL 语法,不过它并不是通用所有的数据库类型。 下面我们以MySQL为例,研究一下insert 怎样去忽略或替换重复数据 2.表实例 表名称:person 表字段: Column Name Primary Key A

wdquan19851029的专栏 7960

用 MyBatis + MySQL 实现高效的批量 Upsert

性能极致:将成百上千次数据库交互,压缩为一次。这是数量级的性能提升。代码简洁:将复杂的业务层判断逻辑,简化为一行 Mapper 调用,极大提升了代码的可读性和可维护性。数据一致性:整个操作在数据库层面被视为一个单一的语句,具有更好的原子性保障。

tybAly的博客 736

mybatis存在就不插入_mybatis批量新增数据;批量修改数据;存在则更新,不存在则插入...

一、批量新增dao层:boolean insertBatchDelegation(List list);xml层:insert into act_delegation(act_name,act_key,from_user_id,from_user_name,to_user_id,to_user_name,start_date,end_date,gmt_create)values(#{item.ac...

weixin_31484881的博客 1185
上一篇: 【无标题】
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值