Mybatis批量添加数据
来源:互联网 发布:sql查询分析器在哪里 编辑:程序博客网 时间:2024/05/29 08:30
在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来。
实体类TrainRecord结构如下:
java代码:
private static final long serialVersionUID = -1206960462117924923L; private long id; private long activityId; private long empId; private int flag; private String addTime; //setter and getter }对应的mapper.xml中定义如下:xml代码<resultMap type="TrainRecord" id="trainRecordResultMap"> <id column="id" property="id" jdbcType="BIGINT" /> <result column="add_time" property="addTime" jdbcType="VARCHAR" /> <result column="emp_id" property="empId" jdbcType="BIGINT" /> <result column="activity_id" property="activityId" jdbcType="BIGINT" /> <result column="flag" property="status" jdbcType="VARCHAR" /></resultMap>mapper.xml中批量插入方法的定义如下:xml代码:<insert id="addTrainRecordBatch" useGeneratedKeys="true" parameterType="java.util.List"> <selectKey resultType="long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> insert into t_train_record (add_time,emp_id,activity_id,flag) values <foreach collection="list" item="item" index="index" separator="," > (#{item.addTime},#{item.empId},#{item.activityId},#{item.flag}) </foreach></insert>
对于foreach标签的解释参考了网上的资料,具体如下:
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map
关于foreach的具体例子在这里就先不举,以后有机会可以把每一种情况都举一个例子列出来。
MysqlBaseDAO:
public class MySqlBaseDAO extends SqlSessionDaoSupport { /** * insert:插入操作. <br/> * * @author chenzhou * @param method 插入操作的方法名 * @param entity 查询参数或实体类 * @return 返回影响的行数 * @since JDK 1.6 */ public int insert(String method,Object entity){ return this.getSqlSession().insert(method, entity); } //其余方法省略}
TrainRecord实体类对应的TrainRecordDAO 定义如下:
public class TrainRecordDAO extends MySqlBaseDAO { /** * addTrainRecordBatch:批量插入培训记录. <br/> * * @author chenzhou * @param trainRecordList 培训记录list集合 * @return 影响的行数 * @since JDK 1.6 */ public int addTrainRecordBatch(List<TrainRecord> trainRecordList){ return this.insert("addTrainRecordBatch", trainRecordList); } //省略其余的方法}
然后直接调用TrainRecordDAO 中的 addTrainRecordBatch方法就可以批量插入了。
0 0
- Mybatis批量添加数据
- Mybatis批量添加数据
- mybatis批量修改、添加数据
- mybatis 批量添加 过滤库里已有数据
- MyBatis批量添加
- mybatis oracle批量添加
- Mybatis批量添加实现
- mybatis批量添加
- Mybatis批量添加
- mybatis 批量添加(oracle)
- mybatis 批量添加
- Mybatis批量查询,批量添加,批量删除
- mybatis数据批量插入
- mybatis数据批量插入
- mybatis批量插入数据
- mybatis 批量插入数据
- Mybatis批量更新数据
- MyBatis批量插入数据
- 八皇后
- Codefroces 486C Palindrome Transformation【贪心】好题
- hdu2554N对数的排列问题+数学推论
- Linux命令之"tail"
- Linux成长之路(三)——环境变量和搜索文件
- Mybatis批量添加数据
- linux下使用Makefile编译程序入门介绍
- Python的自带模块——HTMLParser的初步学习
- linux 内核中的开发人员 名单 CREDITS文件
- orcale总结
- screen.width,screen.height
- 55.Git备忘笔记
- java enum(枚举)使用详解 + 总结
- JDBC 事务管理