mybaties中的insert into select 用法,mybaties批量插入

原创 2016年05月31日 08:54:09

在最近的项目中用到了站内信功能,需求是站内信要发给所有用户和指定用户,为了优化数据库的性能,极大的减少访问数据库的次数,所以在mybaties中用到了批量删除,直接上代码吧!

1.发送给部分用户,批量插入功能

MessageDaoImpl.java

	public void sendPartMessage(List<UserMessage> list) throws Exception {   //list中存储的是要发送站内信用户的Id
		getSqlSession().insert("message.sendPartMessage",list);
	}


message-mapper.xml

	<insert id="sendPartMessage" useGeneratedKeys="true" parameterType="java.util.List">
	 INSERT INTO UserMessage(
	Sender,Content,MsgDate,ReadStatus,UserId,ParentId,MsgId,OrderId,TypeItem,SubName,Type,Name,contentM) VALUES 
		<foreach collection="list" index="index" item="item" separator="," >    <-- 循环遍历所有指定用户的id,实现批量插入-->
                 (#{item.sender},#{item.content},#{item.msgDate},#{item.readStatus},#{item.userId},
                 0,#{item.msgId},0,#{item.typeItem},#{item.subName},#{item.type},#{item.name},#{item.contentM})
       <span style="white-space:pre">		</span></foreach> 
	</insert>

2.为所用用户发送站内信insert into select

从用户表中查询出所有的用户id,并且进行插入,其中只访问一次数据库

MessageDaoImpl.java

<span style="white-space:pre">	</span>public void sendAllMessage(UserMessage userMessage) {
<span style="white-space:pre">		</span>getSqlSession().insert("message.sendAllMessage",userMessage);
<span style="white-space:pre">	</span>}
message-mapper.xml

	<insert id="sendAllMessage" parameterType="userMessage">
	 INSERT INTO UserMessage(Sender,Content,MsgDate,ReadStatus,UserId,ParentId,MsgId,OrderId,TypeItem,SubName,Type,Name,contentM) 
		select #{sender},#{content},#{msgDate},#{readStatus},userInfo.Id,0,#{msgId},0,#{typeItem},#{subName},#{type},#{name},#{contentM}
		 from UserInfo 
	</insert> 
insert into  表名(字段1,字段2,字段3,......)  select userMessage中的属性(即是变量) userInfo.Id为从UserInfo表中查出的所有用户ID,这样就在站内信的表中未所用用户都插入了一条与其id对应的站内信。



版权声明:java架构师视频教程,高并发集群分布式视频教程,高并发处理方式,大数据视频教程出售QQ:694042039

相关文章推荐

mybatis中 insert into select 批量生成uuid时 用replace去掉"-"只生成一个uuid

mybatis中 insert into select 批量生成uuid时 用replace去掉"-"只生成一个uuid

数据库_MySQL_ SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句       Insert是T-sql中常用语句,Insert INTO table(field1,field2,...

关于mybatis的insertintoselect命令未结束问题

关于mybatis的 insert into select 命令未结束问题,最后以为是sql写错了,但是,在plsql执行又没问题。最后还是解决问题, 是设置问题。 ### Cause...

关于mybatis的 insert into select 命令未结束问题

关于mybatis的 insert into select 命令未结束问题,最后以为是sql写错了,但是,在plsql执行又没问题。最后还是解决问题, 是设置问题。 ### Cause: java.s...

MyBatis批量插入数据

在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些...

SSM框架中集成批量导入Mysql数据库功能

如果导入的数据在万条以上,项目中生成的导入功能数据在万条以上会变得非常慢,然后优化了一下,经测试,几万的数据在10秒内成功导入。感觉还是有需要优化的地方,时间精力有限,有优化的希望多交流交流。上代码:...

ssm利用poi将excel数据导入数据库

POI导入数据库 1.前台页面                 /doFile.action" method="post" enctype="multipart/form-data">        ...
  • tffboke
  • tffboke
  • 2016年06月29日 19:57
  • 6153

【笔记】SSM批量删除、POI导出

ssm批量删除、poi导出

SSM ajax实现批量启用和批量禁用

SSM ajax实现批量启用和批量禁用

Mybatis批量更新数据库与批量插入数据库(以oracle为例)

一、批量更新 1、普通写法(一条记录update一次,性能比较差,容易造成阻塞。不建议使用) update id="updateBatch" parameterType="java....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybaties中的insert into select 用法,mybaties批量插入
举报原因:
原因补充:

(最多只允许输入30个字)