mybaits批量插入
来源:互联网 发布:海关数据库的企业代码 编辑:程序博客网 时间:2024/05/22 03:59
对数据库的查询往往会消耗比较大的资源,因此我们在写代码的时候会侧重于在代码里去完成实体类的聚合而不是通过不断的查询。
最近在review code的时候发现了在遍历列表的循环查询数据库是十分消耗资源的。因此来考虑用更高效的方式去解决这个问题。
下面是问题:
List<Long> locationList = locationGroupInfo.getLocationList(); if(locationList != null && locationList.size() != 0) { Long groupId = adLocationGroup.getId(); List<AdLocationAdLocationGroup> adLocationAdLocationGroupList = new ArrayList<AdLocationAdLocationGroup>(); for(Long id : locationList) { AdLocationAdLocationGroup adLocationAdLocatioGroup = new AdLocationAdLocationGroup(); adLocationAdLocatioGroup.setAdId(id); adLocationAdLocatioGroup.setLocationGroupId(groupId); adLocationAdLocationGroupMapper.insertSelective(adLocationAdLocationGroup); } }
这样对数据库插入的太频繁,因此需要改进。我们找到能够批量插入的mybaits支持,定义mapper:listCRUDMapper,当中定义接口:
// 批量插入AdLocationAdLocationGroup public int insertAdLocationAdLocationGroupList(List<AdLocationAdLocationGroup> adLocationAdLocationGroupList);
sqlmap:
<insert id="insertAdLocationAdLocationGroupList" parameterType="java.util.List"> <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> insert into ad_location_ad_location_group (id, ad_id, location_group_id ) values <foreach collection="list" item="adLocationAdLocationGroup" index="index" separator=","> (#{adLocationAdLocationGroup.id,jdbcType=BIGINT}, #{adLocationAdLocationGroup.adId,jdbcType=BIGINT}, #{adLocationAdLocationGroup.locationGroupId,jdbcType=BIGINT} ) </foreach> </insert>
优化后的代码:
List<Long> locationList = locationGroupInfo.getLocationList(); if(locationList != null && locationList.size() != 0) { Long groupId = adLocationGroup.getId(); List<AdLocationAdLocationGroup> adLocationAdLocationGroupList = new ArrayList<AdLocationAdLocationGroup>(); for(Long id : locationList) { AdLocationAdLocationGroup adLocationAdLocatioGroup = new AdLocationAdLocationGroup(); adLocationAdLocatioGroup.setAdId(id); adLocationAdLocatioGroup.setLocationGroupId(groupId); adLocationAdLocationGroupList.add(adLocationAdLocatioGroup); } listCRUDMapper.insertAdLocationAdLocationGroupList(adLocationAdLocationGroupList); }
这样不用遍历的每次都去操纵数据库。提高了效率。
0 0
- mybaits批量插入
- Mybaits的批量插入
- mybaits批量插入
- mybaits中批量插入操作注意点
- jdbc 批量插入 和mybaits框架批量插入对比
- mybaits批量操作数据库
- Mybaits 批量操作
- mybaits+oracle批量操作
- mybaits中的批量操作
- mybaits批量新增修改
- mybaits批量insert和update
- MyBaits批量增删改查
- mybaits如何批量更新数据库
- mybaits 插入返回主键问题
- mybaits批量存储记录(有实例)
- mybaits使用provider处理批量sql
- 批量插入
- 批量插入
- Java实现栈结构详细代码
- uestc876爱管闲事【区间dp】
- 空间直方图Meanshift跟踪—代码
- TreeSet练习题
- LoadRunner之并发用户数与迭代关系
- mybaits批量插入
- Android中的layout_column和layout_span属性
- 数据仓库详细分析和说明
- hdu 1240 poj 2225 Asteroids! 三维bfs 解题报告
- 归并排序Java实现
- Android listview嵌套viewpager滑动冲突问题
- 谈谈 Object.create ,JS的原型继承
- C#基础知识---飞行棋小游戏
- 数位DP 水~