mybatis接收多个参数的几种形式

mybaties这个框架相信大家都是不怎么陌生了,作为时下最为流行的持久层框架。你对他的使用了解多少?今天我准备对mybaties接收多个参数来做一个讲解。

我将着手于多个不同参数和集合参数两个方面来说:

一、多个不同参数的传入:

1.@Param注解
看下面这个代码:

 void addUserIdAndRoleId(@Param("userId") int userId,@Param("roleId")int roleId);

可以通过@param注解来指定key,然后xml或者注解上通过指定的key来获取对应要传入的参数

 @Insert("insert into t_user_role values(#{userId},#{roleId})")

上面是通过注解方式获取多个参数,接下来看xml格式获取多个参数

	<insert id="addUserIdAndRoleId">
        insert into t_user_role values(#{userId},#{roleId})
    </insert>

与注解方式获取参数方法相同,使用#{key}获取。
2.直接传入参数
看下面这段代码:

void addUserIdAndRoleId( int userId,int roleId);

直接往mybaties传入多个参数,

	<insert id="addUserIdAndRoleId">
        insert into t_user_role values(#{param1},#{param2})
    </insert>

对应的xml中可以传入#{param1},#{param2},并根据参数个数依次往后推。

@Insert("insert into t_user_role values(#{param1},#{param2})") 

与xml方式获取参数方法相同,使用#{param1}获取,并根据参数个数依次往后推。
3.使用Map集合封装
看下面这段代码:

 Map<String,Integer> map = new HashMap<>();
        map.put("userId",userId);
        map.put("roleId",roleId);
        roleDao.addUserIdAndRoleId1(map);

service层实现类定义map集合,将所传参数封装进Map集合,然后传入mybatis

 @Insert("insert into t_user_role values(#{userId},#{roleId})")
 void addUserIdAndRoleId1(Map map);

这是注解方式传入map集合

	<insert id="addUserIdAndRoleId1" parameterType="map">
        insert into t_user_role values(#{userId},#{roleId})
    </insert>

xml方式传入Map集合,也可以自己封装pojo传入。(推荐)

二、传入集合(数组)参数

1.集合参数
传入这样一个参数:

List<CheckItem> findByIds(List<Integer> checkItemIds);

传入一个list集合

<select id="findByIds"  resultType="com.itcast.pojo.CheckItem">
      select * from t_checkitem where id in
      <foreach collection="list" item="item" open="(" separator="," close=")" 	 index="index">
          #{item}
      </foreach>
 </select>

根据上面的代码可以看出,由于是查询对象集合需要先指定resultType结果类型,写SQL时在传入集合的地方in 后面使用动态sql语句foreach标签,来遍历集合将其放入in关键字的括号中。注意:collection类型必须指定为list,item指定参数, open="(" separator="," close=")" 这三个用来动态拼接括号,与参数间的逗号。index=“index” 指定索引。 最后在标签体内使用#{item} 来获取集合的每一个值,item为自己指定的值
2.数组参数

 List<CheckItem> findByIds(Interger[] checkItemIds); //数组参数
 List<CheckItem> findByIds(Interger... checkItemIds); //可变参数

传入数组参数,可变参数本质上就是数组

<select id="findByIds"  resultType="com.itcast.pojo.CheckItem">
      select * from t_checkitem where id in
      <foreach collection="array" item="item" open="(" separator="," close=")" 	 index="index">
          #{item}
      </foreach>
 </select>

传入数组参数和传入集合参数基本一致,唯一的区别:collection类型必须指定为array
多参数的传入今天就先聊到这了。。。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MyBatis Plus是一款针对MyBatis框架的增强工具, 它提供了很多方便的方法来实现多表联查. 你可以使用MyBatis Plus的`selectPage`方法来实现多表联查, 该方法接收一个`QueryWrapper`参数, 你可以在`QueryWrapper`中指定你要连接的表, 以及连接条件. 例如, 假设你有两张表: `t_user`和`t_order`, 并且你希望查询出每个用户的订单信息, 那么你可以使用如下代码来实现: ```java QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("u.status", 1) .leftJoin("t_order o", "u.id = o.user_id"); IPage<User> page = new Page<>(1, 10); IPage<User> result = userMapper.selectPage(page, queryWrapper); ``` 在这段代码中, `leftJoin`方法表示进行左连接, 你也可以使用`rightJoin`方法进行右连接, 或者不使用连接方法直接写连接条件. 另外, MyBatis Plus还提供了很多其他方法来实现多表联查, 例如`selectList`, `selectMaps`, `selectObjs`等, 这些方法的使用方法与`selectPage`类似. 希望这能帮到你! 如果你有其他问题, 请随时联系我. ### 回答2: MyBatis Plus提供了多种方法实现多表联查。以下是其中几种常见的方法: 1. 使用@TableName注解和实体类中的关联注解,例如@OneToOne、@OneToMany、@ManyToOne等注解来定义表之间的关系,然后使用Mapper的selectList方法进行联查。这种方式比较灵活,可以自定义查询条件。 2. 使用Wrapper进行多表联查。Wrapper是MyBatis Plus提供的一个查询条件构造器,可以通过指定条件来进行多表联查。例如,可以使用Wrapper的join方法来关联不同的表,然后使用selectList方法进行查询。 3. 使用自定义的SQL语句进行多表联查。可以编写自定义的SQL语句来实现多表联查,然后通过MyBatis Plus提供的方法进行查询。可以使用@Select注解或者XML文件配置进行SQL语句编写。 4. 使用MyBatis Plus提供的关联查询方法。MyBatis Plus提供了一些特定的关联查询方法,例如selectJoinPage、selectJoinList等方法,可以直接进行多表联查,省去了手动编写SQL语句的步骤。 总之,无论是通过注解还是通过Wrapper或者自定义SQL语句,MyBatis Plus都提供了多种方法来实现多表联查,开发者可以根据自己的需求和习惯进行选择和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值