mybatis的foreach标签(记录那些自己走过的坑)

1.foreach标签介绍

主要参数:

collection:要循环的集合,有三个参数类型 array、List、Map,这是传递的参数类型。这里有注意的地方,当传递一个包含list的map集合时也可以不用这么写,下面会有说明。
index:循环的索引,随便写,不用在意。
item:集合中的一个元素 相当于for (String string : list)中的string
open:一开始自己写xml时,看网上说这个是什么开可以省略,没怎么懂。自己写的时候看mybatis拼接的SQL语句,发现过这是个是SQL语句里函数的括号,看下图。
mybatis的foreach标签(记录那些自己走过的坑)_第1张图片
close:同上
separator:循环内容之间以“,”分隔。可以参看上图
mybatis接受的参数分为:(1)基本类型;(2)对象;(3)List;(4)数组;(5)Map

mybatsi的foreach标签xml文件写法示范:
说明一下 “jdbcType=INTEGER ”是为了说明java传递给Mybatis的参数,我这里age是int类型,对应的jdbcType是INTEGER。关于jdbcType其他类型的参数可以看MyBatis 通过包含的jdbcType类型
parameterType里写的传递的参数,这里是java.util.List,因为传递的是list。
resultType写的是User,如果你没在sqlMapConfig.xml 文件里的typeAliases标签里配置类的路径,也可以在这写,比如“com.domain.User”

    

foreach内多参数写法


        INSERT INTO user (name,age,sex,user_id,friend_id) VALUES
        
            (
            #{item.name,jdbcType=VARCHAR},
            #{item.age,jdbcType=INTEGER},
            #{item.sex,jdbcType=VARCHAR}
            )
        
    

mybatis传入多个参数时,用map进行封装,collection可以这么写
dao层的接口

    //这里hashMap主要有两个参数,一个是关键字,一个是idList。
    List searchByKeyWord(HashMap hashMap);

xml配置
由于是多个参数,用的传递的是map,不写parameterType没事。


你可能感兴趣的:(Mybatis)