今天讲一下mybatis的in操作,有坑呀。博主用了三天解决了一个in操作的问题,下面为大家详细讲解。
在mysql中想要查询多条语句,我们可以使用in,如这条语句:
select * from t_menu where id in (1,2,3,4)
查询结果:
然而,在mybatis中是不支持这样传参数的,不过mybatis提供了foreach语句实现in查询。
1.foreach属性
foreach元素的属性主要有item、index、collection、open、seqarator、close;
操作手册:
最关键的是collection属性,该属性必须指定,有以下三种情况:
- 如果传入的是单参数,且类型为list时,collection属性值为list;
2. 如果传入的是单参数,且类型为array数组时,属性值为array;
3. 如果传入多个参数时,我们可以封装为map。
接下来,将详细的讲解如何使用mybatis实现mysql的in操作。
2.配置环境
添加mybatis和mysql依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
特别注意:涉及到批量操作时,需要加入圈中所属性
3.编写接口
查询菜单接口:
List<MenuDo> getMenuList(List<Integer>mid);
编写mapper:
<select id="getMenuList" resultType="com.share.core.pojo.MenuDo">
SELECT
*
FROM
t_menu
WHERE
id IN
<foreach item="mid" collection="list" index="index" open="(" close= ")" separator=",">
#{mid}
</foreach>
到此,mybatis使用in操作就完成了。
4.避免踩坑
上面提到博主遇到了坑,贴一张之前踩坑的截图。
因为博主喜欢对其标签,用tab了两下,接下来执行结果:
注释报sql语句错误,参数的空格间隙过大,复制到mysql中,也是提示参数不对。用了replace去除空格也不行,后来发现是不能有空格,xml文件后把空格带进sql中,从而查询不出结果。
------------------------------------end----------------------------------------------------
到此,springboot使用mybatis的in操作就结束了哦,如果您觉得对您有所帮助,可以关注下博主的公众号哦,感谢支持。拜托了
个人公众号,努力的小蚂蚁