书接上文:Mybatis常见查询操作
https://blog.csdn.net/weixin_43388691/article/details/127211492?spm=1001.2014.3001.5502
这篇文章我们接着探讨Mybatis的查询相关操作。
开发环境:SpringBoot+Mybatis
Mybatis开发方式:xml配置开发。
**
这篇文章我们主要探讨:我们怎样确定查询条件??
**
其实在查询时,查询参数的传递主要是靠parameterType这个select标签中的参数所确定的。
1、当我们传递单个参数时:在这里我以int类型为例。(其他基本数据类型如法炮制。)
(1)mapper层:
//根据用户ID查询该用户
User2 queryUserById(int id);
(2)xml层:
<select id="queryUserById" parameterType="int" resultType="com.swagger.swaggerdemo1.Pojo.User2">
select * from user2 where id = #{id}
</select>
(3)测试:
@Test
@Transactional
public void queryUserById(){
User2 user2 = userMapper.queryUserById(1);
User2 user3 = userMapper.queryUserById(1);
System.out.println(user2 == user3);
System.out.println(user2);
}
2、当我们传递多个参数时,我们有好几种方法:
(1)通过Map集合的方式:
(a)mapper层:
//根据Map集合查询用户
User2 queryUserByMap(HashMap map);
(b)xml层:
<select id="queryUserByMap" resultType="com.swagger.swaggerdemo1.Pojo.User2">
select * from user2 where id = #{id} and name = #{name}
</select>
(c)测试层:
@Test
public void queryUserByMap(){
HashMap<String, Object> map = new HashMap<>();
map.put("id",1);
map.put("name","小明");
User2 user2 = userMapper.queryUserByMap(map);
System.out.println(user2);
}
(2)使用@Param()参数指定参数的名称。
主要依靠@Param注解进行参数的绑定,使用方法分为两种,一种是自定义别名,另外一种使用index。
》》》》》》》使用自定义名字:
(a)mapper层
//根据@Param查询用户
User2 queryByParam(@Param("id") Integer id,@Param("name") String name);
(b)xml层:
<select id="queryByParam" resultType="com.swagger.swaggerdemo1.Pojo.User2">
select * from user2 where id = #{id} and name = #{name}
</select>
(c)测试层:
@Test
@Transactional
public void queryUserByParam(){
User2 user2 = userMapper.queryByParam(1,"小明");
System.out.println(user2);
}
》》》》》》》使用索引:
(3)使用封装对象进行参数的绑定。
在这里其实和第一中单参数查询一样,只不过需要在这里注意在xml中的参数要和实体类中一样。
(a)Mapper层
//根据封装对象查询用户
User2 queryByUser2(User2 user2);
(b)xml层:
<select id="queryByUser2" parameterType="com.swagger.swaggerdemo1.Pojo.User2" resultType="com.swagger.swaggerdemo1.Pojo.User2">
select * from user2 where id = #{id} and name = #{name}
</select>
(c)测试:
@Test
@Transactional
public void queryUserByUser2(){
User2 user21 = new User2();
user21.setId(1);
user21.setName("小明");
User2 user2 = userMapper.queryByUser2(user21);
System.out.println(user2);
}
总结:在这里其实传递多个参数主要有如下几种办法:
(1)通过Map对象
(2)通过@Param注解指定
(3)通过对象封装
其实也可以通过List集合进行传递,但是因为传递进的参数需要涉及到forEach循环,然后在以后写到foreach遍历的时候在进行补充吧!!!
给大家推荐两篇相似的博客,方便大家进一步加深理解,增强和保持识记能力。
https://blog.csdn.net/xiaojin21cen/article/details/81069811