如何在mapper传入list参数



mapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.xx.cms.dal.extdao.GroupByMaterialMapper">

    <select id="groupByMaterialIds" resultType="com.xxx.xx..cms.dal.extdomain.GroupByMaterialDO">
        select t1.material_id AS materialId, t2.material_name AS materialName,
        t2.material_type AS materialType, t1.position_id AS positionId,
        t5.position_name AS positionName, t1.project_id AS projectId,
        t3.project_name AS projectName, t1.task_id AS taskId,t4.task_name AS taskName
        from xspace_task_material_pre t1
        left join xspace_material_pre t2 on t1.material_id = t2.id
        left join xspace_delivery_project_pre t3 on t1.project_id = t3.id
        left join xspace_delivery_task_pre t4 on t1.task_id = t4.id
        left join xspace_content_position_pre t5 on t1.position_id = t5.id
        <where>
            t1.material_id in
            <foreach close=")" collection="materialIds" item="listItem" open="(" separator=",">
                #{listItem}
            </foreach>
        </where>
        order BY t1.material_id
    </select>

</mapper>


mapper.java文件


import com.xxx.xx.cms.dal.extdomain.GroupByMaterialDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *
 * @author 
 * @version 2017/12/5 17:38:29
 */
@Mapper
public interface GroupByMaterialMapper {

    /**
     *
     *
     * @param materialIds
     * @return
     */
    List<GroupByMaterialDO> groupByMaterialIds(@Param("materialIds") List<Long> materialIds);
}





  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 MyBatis 的动态 SQL 和 ResultMap 来实现传入参数任意字段和表名,返回 List<Mapper> 的功能。具体步骤如下: 1. 在 mapper.xml 文件中编写动态 SQL。例如,以下代码可以根据传入参数(表名和字段名)动态生成 SQL 语句: ```xml <select id="selectFieldsFromTable" resultMap="MyResultMap"> SELECT <foreach item="column" index="index" collection="fields" separator=","> ${column} </foreach> FROM ${table} </select> <resultMap id="MyResultMap" type="java.util.Map"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <!-- 其他字段 --> </resultMap> ``` 其中,`fields` 是一个 List<String> 类型的参数,包含要查询的字段名;`table` 是一个 String 类型的参数,表示要查询的表名。`${column}` 和 `${table}` 是 MyBatis 的动态 SQL 占位符,可以在运行时被实际的参数值替换。`<resultMap>` 标签定义了查询结果映射的规则,这里使用了一个简单的 Map 类型作为返回值,可以根据实际情况进行修改。 2. 在对应的 Java 接口中定义方法,用于调用 mapper.xml 中的 SQL 语句。例如: ```java public interface MyMapper { List<Map<String, Object>> selectFieldsFromTable(@Param("table") String table, @Param("fields") List<String> fields); } ``` 其中,`@Param` 注解用于指定传入参数的名称,方便在 mapper.xml 中使用。 3. 在调用 mapper 方法时,传入相应的参数。例如: ```java List<Map<String, Object>> result = myMapper.selectFieldsFromTable("user", Arrays.asList("id", "name", "age")); ``` 这样就可以根据传入参数查询指定表中的指定字段,并返回一个 List<Map>,每个 Map 包含一条记录的字段名和对应的值。需要注意的是,由于使用了动态 SQL 和 ResultMap,返回值的类型为 List<Map<String, Object>>,而不是 List<Mapper>。如果需要返回 Mapper 类型的列表,可以在 ResultMap 中指定相应的类型,并将查询结果映射到 Mapper 对象中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值