Mybatis的传参

Mybatis默认接收一个参数,通过#{value}可以方便的取出;此参数可以是对象,可以是基本类型,集合。
1、传入多个参数
虽然默认只接收一个参数,但是此参数可以是一个对象;故而传入多个参数可以通过借助包装类,将这些参数封装成一个包装类,即可达到目的。然而,Mybatis其实也提供了相应的方法,那就是org.apache.ibatis.annotations.Param包下面@Param注解。使用方法也很简单,类似于springmvc的@RequestParam注解,只是格式上面有些小区别而已。Mybatis的这个注解有一个属性是value,与上面提到的#{value}是同一个单词。没错,Mybatis的这个注解就是给这个value重新赋值。示例:
在mapper中:

OrdersUser selectBingoByOrdersId(@Param(value = "ordersId") String ordersId, @Param(value = "userId") String userId);

下面,在.xml文件中,我们只需要通过取值运算符取出刚才设置的值即可。#{ordersId},#{userId}
在xml文件中:

<select id="selectBingoByOrdersId" resultMap="BaseResultMap" parameterType="java.lang.String">
        select
        <include refid="Base_With_User_Column_List"/>
        from orders_user ou
        LEFT JOIN user_paixi u ON ou.user_id = u.id
        where ou.orders_id = #{ordersId} AND ou.user_id = #{userId} AND ou.category = 2
        limit 1
    </select>

2、传入集合,List,Set,Map
传入集合主要是取值的时候有些繁琐 ,需要借助foreach collection。
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。

  1. item表示集合中每一个元素进行迭代时的别名
  2. index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置
  3. open表示该语句以什么开始
  4. separator表示在每次进行迭代之间以什么符号作为分隔 符
  5. close表示以什么结束

在使用foreach的时候collection属性是必须指定的,即parameterType必须写明传入的类型
示例:
在mapper中:

List<UserPaixi> selectByKeySet(@Param(value = "idSet") Set<String> idSet);

在xml文件中:

<select id="selectByKeySet" resultMap="BaseResultMap" parameterType="java.util.Set">
    SELECT
    <include refid="Base_Column_List"/>
    FROM user_paixi
    WHERE
    id in
    <foreach collection="idSet" index="index" item="item" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

List,Map的也类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值