前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis传入参数为list、数组、map写法

MyBatis传入参数为list、数组、map写法

作者头像
挨踢小子部落阁
发布2020-01-15 11:48:46
1.2K0
发布2020-01-15 11:48:46
举报
1.foreach简单介绍:

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

foreach元素的属性主要有item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名,

index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔符,

close表示以什么结束,

collection属性是在使用foreach的时候最关键的也是最容易出错的,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:

(1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .

(2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .

(3)如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

2.实践-实体类
代码语言:javascript
复制
public class Employees {  
    private Integer employeeId;  
    private String firstName;  
    private String lastName;  
    private String email;  
    private String phoneNumber;  
    private Date hireDate;  
    private String jobId;  
    private BigDecimal salary;  
    private BigDecimal commissionPct;  
    private Integer managerId;  
    private Short departmentId;  
}    
3.实践-XML

List:forech中的collection属性类型是List,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意

代码语言:javascript
复制
    <select id="getEmployeesListParams" resultType="Employees">  
        select *  
        from EMPLOYEES e  
        where e.EMPLOYEE_ID in  
        <foreach collection="list" item="employeeId" index="index"  
            open="(" close=")" separator=",">  
            #{employeeId}  
        </foreach>  
    </select>  

Array:forech中的collection属性类型是array,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意

代码语言:javascript
复制
<select id="getEmployeesArrayParams" resultType="Employees">  
    select *  
    from EMPLOYEES e  
    where e.EMPLOYEE_ID in  
    <foreach collection="array" item="employeeId" index="index"  
        open="(" close=")" separator=",">  
        #{employeeId}  
    </foreach>  
</select> 

Map:不单单forech中的collection属性是map.key,其它所有属性都是map.key,比如下面的departmentId

代码语言:javascript
复制
   <select id="getEmployeesMapParams" resultType="Employees">  
        select *  
        from EMPLOYEES e  
        <where>  
            <if test="departmentId!=null and departmentId!=''">  
                e.DEPARTMENT_ID=#{departmentId}  
            </if>  
            <if test="employeeIdsArray!=null and employeeIdsArray.length!=0">  
                AND e.EMPLOYEE_ID in  
                <foreach collection="employeeIdsArray" item="employeeId"  
                    index="index" open="(" close=")" separator=",">  
                    #{employeeId}  
                </foreach>  
            </if>  
        </where>  
    </select>  
4.实践-Mapper
代码语言:javascript
复制
public interface EmployeesMapper {   

List<Employees> getEmployeesListParams(List<String> employeeIds);  

List<Employees> getEmployeesArrayParams(String[] employeeIds);  

List<Employees> getEmployeesMapParams(Map<String,Object> params);  
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 挨踢小子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.foreach简单介绍:
  • 2.实践-实体类
  • 3.实践-XML
  • 4.实践-Mapper
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档