商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Mybatis处理List参数过程

Mybatis处理List参数过程

  发布于2026-05-30 阅读(0)

扫一扫,手机访问

Mybatis处理List参数

在日常开发中,处理List参数是Mybatis里非常常见的需求——很多时候我们需要根据一组值(比如多个年龄)来查询,或者从一批实体对象中提取某些属性作为查询条件。这两类场景看似简单,但传参时的写法稍有不同就容易踩坑。下面就用两个典型示例,把List参数的用法一次说清楚。

前期准备

首先准备好一张学生表 tb_student,结构如下:

Mybatis处理List参数过程

CREATE TABLE `tb_student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC;
INSERT INTO `work`.`tb_student` (`id`, `name`, `age`) VALUES ('25', ' Ben ', '23');
INSERT INTO `work`.`tb_student` (`id`, `name`, `age`) VALUES ('26', 'Jack', '24');
INSERT INTO `work`.`tb_student` (`id`, `name`, `age`) VALUES ('27', 'Tom', '24');
INSERT INTO `work`.`tb_student` (`id`, `name`, `age`) VALUES ('28', 'Jerry', '19');
INSERT INTO `work`.`tb_student` (`id`, `name`, `age`) VALUES ('29', 'Lilian', '18');

对应的实体类 StudentInfo

public class StudentInfo {

    private Integer id;

    private String name;

    private Integer age;
    
    // 省略 get、set 方法
}

示例

下面通过两种不同类型的List参数,演示不同的查询写法。

StudentDao 中的方法声明:

/**
     * 通过年龄和名称查询结果
     * @param ages
     * @param name
     * @return
     */
    List getListByAgesAndName(@Param("ages") List ages, @Param("name") String name);
    
  /**
     * 通过年龄【实体中获取】和名称查询结果
     * @param studentInfos
     * @param name
     * @return
     */
    List getListByStudentInfoAndName(@Param("studentInfos") List studentInfos, @Param("name") String name);

StudentMapper.xml 中的映射配置:


    
    
    

第一个方法直接传入年龄List,配合模糊查询姓名;第二个方法传入学生实体List,在foreach中通过 #{studentInfo.age} 取出每个实体的年龄字段。两种方式的foreach标签用法完全一致,只是item属性的取值路径不同。

总结

以上就是Mybatis处理List参数的核心用法:无论是基本类型的List,还是实体对象的List,都可以通过标签轻松实现动态IN查询。关键点在于collection属性要匹配@Param指定的名称,item属性决定了后续如何引用元素值。理解了这个套路,以后碰到类似的批量查询场景就能举一反三了。

本文转载于:https://www.jb51.net/program/3648412d7.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注