Mybatis传入参数为List对象时(foreach的用法/批量插入)

文章目录

  • >Mybatis传入参数为List对象时(foreach的用法/批量插入)
  • >关于mybatis的三种批量插入以及效率比较
    • 第一种:普通for循环插入
    • 第二种:mybatis BATCH模式插入
    • 第三种:foreach方式插入
    • 项目实例:

>Mybatis传入参数为List对象时(foreach的用法/批量插入)

  1. 场景复现
    首先有如下一张表:
MySQL [test]> select * from t_entry_resource;
+----+-------------+------+----------+--------+--------+---------------------+
| id | resource_id | type | title    | banner | icon  | add_date            |
+----+-------------+------+----------+--------+--------+---------------------+
| 11 |          6  | 14   | 分类     | 1.jpg  | 2.jpg  | 2017-11-17 11:22:30 |
| 12 |          3  | 1    | 测试12   | 3.jpg  | 4.jpg  | 2017-11-17 11:22:30 |
| 13 |        653  | 1    | 测试34   | 5.jpg  | 6.jpg  | 2017-11-20 02:32:26 |
| 14 |          1  | 1    | 测试5    | 7.jpg  | 8.jpg  | 2017-11-20 02:32:51 |
| 15 |        3942 | 3    | 测试6    | 9.jpg  | 10.jpg | 2017-11-20 02:34:27 |
+----+-------------+------+----------+--------+--------+---------------------+
5 rows in set (0.01 sec)

如果要根据resource_id和type来批量查询记录,该如何编写Mybatis语句?
2. 解决方案
直接贴出来解决方案如下所示:

Dao层接口:

List<EntryResource> findByRidAndType(List<EntryResource> entryResources);

XML语句:

<select id="findByRidAndType" resultMap="entryResource" parameterType="list">
        SELECT
        *
        FROM
        t_entry_resource a
        WHERE
<foreach collection="list" index="index" item="entryResources" open="(" close=")" separator="or">
            ( `type`=#{entryResources.type} and resource_id=#{entryResources.resourceId} )
foreach>

select>

该语句利用了mybatis的foreach动态拼接SQL。

还有批量插入:

int insertBatch(@Param("list") List<AlarmDispose> disposeList);


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.boot.reservation.mapper.AlarmDisposeMapper">
    <sql id="tableName">
        alarm_dispose
    sql>

    <sql id="baseColumn">
        id,alarm_inform_id,dispose_opinion,dispose_explain,dispose_person,accessory,picture,dispose_time,valid
    sql>

    <insert id

你可能感兴趣的:(Mybatis,java)