`

mysql中insert into和replace into 使用小记

阅读更多

[mysql]

insert into 和 replace into 两者的区别是

insert into 是向一张表中插入记录

replace into 则是有插入和覆盖的功能,插入和insert into 是一样的,覆盖则是以主键,其次是唯一键为准的,即:

数据表中有以下数据:

主键ID 名称 备注
1 admin 这是管理员
2 user1 这是操作员

执行了 replace into 表名 values (1,'root','这是管理员');后

数据即修改为:

主键ID 名称 备注
1 root 这是管理员
2 user1 这是操作员

以上简单的说明replace into的作用

 

mysql 中insert into 批量添加的作用

场景:

有一存放学生对象的List集合,size为10000,需要持久化到数据库中

做法一:

遍历该List集合,将对象一个一个取出来执行insert into语句,相信这种做法是一般程序员采用的,很简单。

做法二:

利用mysql的insert into 表名 values (.....),(.....),(.....),(.....) 特性一次性大批量的插入数据,提高效率

[java]

备注:我用的是ibatis

业务层:

private void batchInsertAct(List<ProgramDetail> acts) throws DataBaseException {
        Map<Integer, List<ProgramDetail>> map = this.groupListBySize(acts, GROUP_SIZE);
        if ((map != null) && !map.isEmpty()) {
            for (Integer key : map.keySet()) {
                Map<String, Object> paramaters = new HashMap<String, Object>();
                paramaters.put("acts", map.get(key));
                this.programDetailDao.batchInsertAct(paramaters);
            }
        }
    }

 数据库层:

<insert id="batchInsertAct" parameterClass="map">
	   <![CDATA[
	   		INSERT INTO T_PROGRAMDETAIL(PROGRAMDETAILID,PROGRAMLISTID,PROGRAMTIME,PROGRAMNAME,VISIBLE,COLLATESTATE,VIDEOSTARTTIME,VIDEOENDTIME) VALUES
	   ]]>
	   <iterate property="acts" conjunction=",">
	        <![CDATA[
	           (null,#acts[].programListId#, #acts[].programTime#, #acts[].programName#, 0, #acts[].collateState#, #acts[].videoStartTime#, #acts[].videoEndTime#) 
	        ]]>
	   </iterate>
   </insert>

 

  利用mysql的replace into 表名 values (.....),(.....),(.....),(.....) 特性一次性大批量的修改数据,提高效率

业务层:

private void batchUpdateAct(List<ProgramDetail> acts) throws DataBaseException {
        Map<Integer, List<ProgramDetail>> map = this.groupListBySize(acts, GROUP_SIZE);
        if ((map != null) && !map.isEmpty()) {
            for (Integer key : map.keySet()) {
                Map<String, Object> paramaters = new HashMap<String, Object>();
                paramaters.put("acts", map.get(key));
                this.programDetailDao.batchUpdateAct(paramaters);
            }
        }
    }

 数据库层:

<insert id="batchUpdateAct" parameterClass="map">
	   <![CDATA[
	   		REPLACE INTO T_PROGRAMDETAIL(PROGRAMDETAILID,PROGRAMLISTID,PROGRAMTIME,PROGRAMNAME,VISIBLE,COLLATESTATE,VIDEOSTARTTIME,VIDEOENDTIME) VALUES
	   ]]>
	   <iterate property="acts" conjunction=",">
	        <![CDATA[
	           (#acts[].programDetailId#,#acts[].programListId#, #acts[].programTime#, #acts[].programName#, 0, #acts[].collateState#, #acts[].videoStartTime#, #acts[].videoEndTime#) 
	        ]]>
	   </iterate>
   </insert>

 

呵呵 随笔而已,格式有点乱,有什么问题或疑问,各位大神请联系我! 

 

 

0
0
分享到:
评论

相关推荐

    MYSQL SELECT INTO 和 INSERT INTO SELECT

    关于MySQL中“SELECT INTO”和“INSERT INTO SELECT”两种语法的使用与说明。

    Mysql中replace与replace into的用法讲解

    而replace into其实与insert into很相像,但对于replace into,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。 replace是mysql 里面处理...

    MySQL中REPLACE INTO和INSERT INTO的区别分析

    您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT...

    解析MySQL中INSERT INTO SELECT的使用

    本篇文章是对MySQL中INSERT INTO SELECT的使用进行了详细的分析介绍,需要的朋友参考下

    mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql in

    mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql ...

    mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析

    本文实例讲述了mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点。分享给大家供大家参考,具体如下: replace into和insert into on duplicate key update都是为了解决我们平时的一个...

    正确使用MySQL INSERT INTO语句

    以下的文章主要介绍的是MySQL INSERT INTO语句的实际用法以及MySQL INSERT INTO语句中的相关语句的介绍,MySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好。 INSERT [LOW...

    MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

    今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on duplicate key update ...,我当时就想怎么不用Replace呢,于是回来就仔细查了下,它们果然还是有区别的

    mysql中insert与select的嵌套使用方法

    本文讲述了mysql中insert与select的嵌套使用的方法,对于初学MySQL的朋友有一定的借鉴价值。 这里需要实现在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现该功能需求。具体情形是:有三张表a、...

    PHP+MySQL之Insert Into数据插入用法分析

    INSERT INTO 语句用于向数据库表中插入新纪录。 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新纪录。 语法: INSERT INTO table_name VALUES (value1, value2,....) 您还可以规定希望在其中插入数据的...

    MySQL Insert Into 添加数据.docx

    MySQL Insert Into 添加数据.docx

    mysql中replace into的用法详解

    replace into语句会根据唯一键/主键删除原有的一条记录, 并且插入一条新的记录来替换原记录。如果没有表不存在唯一键/主键 或者 插入的数据唯一键/主键没有重复的,那么会新增一条记录。 新建一个test表,三个字段...

    mysql 操作总结 INSERT和REPLACE

    一、INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理重复的数据。 1. INSERT的一般用法 MySQL中的INSERT语句和标准的INSERT不太一样,在标准的...

    MySQL replace into 用法.txt

    MySQL replace into 用法.txt

    MySql中使用INSERT INTO语句更新多条数据的例子

    主要介绍了MySql中使用INSERT INTO语句更新多条数据的例子,MySQL的特有语法,需要的朋友可以参考下

    浅析MySQL replace into 的用法

    在 SQL Server 中可以这样处理: 代码如下: if not exists (select 1 from t where id = 1) ...MySQL 中有更简单的方法: replace into 代码如下: replace into t(id, update_time) values(1, now());或 repl

    mysql 的replace into实例详解

    replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中。 1、如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2、 否则,直接插入新...

Global site tag (gtag.js) - Google Analytics