最近做了一个项目用到了mybatis,针对mysql数据库的批量查询与批量更新,现在项目做完了,记下来。
1、批量插入
这是mapper接口
int insertAll(@Param("list") ArrayList<Question> list, @Param("m_id") Integer m_id);
由于我要做的是一个多对一的关联,所以接口中传入了一个集合和一个Integer类型,当然要用@param 注解加于区分他们的名字。
对应的mapper配置
<!-- 批量 插入 -->
<insert id="insertAll">
insert into t_result(m_id,q_id)
values
<foreach collection="list" item="item" index="index"
separator=",">
(#{m_id,jdbcType=INTEGER},#{item.id,jdbcType=INTEGER})
</foreach>
</insert>对应上面代码应该很好看出怎么做
2、批量更新
这个是接口
int updateResluts(ArrayList<Result> list);由于这里只有一个list集合所以可以不用@param注解,但是这里的形参必须为list,当然这是在没有用@param注解的前提下。
<!-- 批量更新答案 -->
<update id="updateResluts" parameterType="java.util.ArrayList">
<foreach collection="list" item="item" index="index" open=""
close="" separator=";">
update t_result
<set>
result = #{item.result,jdbcType=VARCHAR}
</set>
where m_id = #{item.m_id,jdbcType=INTEGER} and q_id =
#{item.q_id,jdbcType=INTEGER}
</foreach>
</update>在进行批量更新测试前,必须在jdbc配置文件链接上加上
allowMultiQueries=true
完整的如下
jdbc.url=jdbc:mysql://ip:3306/xxx?characterEncoding=UTF-8&allowMultiQueries=true好了,现在可以测试了

本文介绍使用MyBatis实现MySQL数据库的批量插入与批量更新操作方法。包括Mapper接口定义及XML配置示例。
192

被折叠的 条评论
为什么被折叠?



