Mybatis框架(四)Mybatis利用Map接口传递多个参数

在实际应用中,查询SQL语句经常需要多个参数,例如:多条件查询,多个参数传递时,元素的parameterType属性值的类型是什么呢?
在Mybatis中允许Map接口通过键值对传递多个参数。
下面我们看一个例子:假设数据操作接口中有个实现查询姓张年龄是12岁的用户信息。
此时,传递给映射器的是一个Map对象,使用它在SQL中设置对应的参数,对应SQL文件代码如下:

 <select id="selectStu" resultType="com.wst.pojo.Stu" parameterType="map">
       /*定义sql*/
      select * from stu where name like concat('%',#{u_name},'%')	and age = #{u_age}
   </select>

参数名u_name和u_sex是Map的key
一、编写接口

 List<Stu>  selectStu(Map<String,Object> param);

二、测试。

 //测试
    @Test
    public void select(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StuMapper mapper = sqlSession.getMapper(StuMapper.class);
        Map<String, Object> map = new HashMap();
        map.put("u_name",'张');
        map.put("u_age",12);
      List<Stu> stuList=mapper.selectStu(map);
        for (Stu stu : stuList) {
            System.out.println(stu);
        }
        //关闭sqlsession
        sqlSession.close();
    }

在这里插入图片描述
注:严格来说,map适用几乎所有场景,但是我们用得不多。原因有两个:

  • map是一个键值对应的集合,使用者要通过阅读它的键,才能明了其作用;
  • 使用map不能限定其传递的数据类型,因此业务性质不强,可读性差,使用者要读懂代码才能知道需要传递什么参数给它,所以不推荐用这种方式传递多个参数。
发布了105 篇原创文章 · 获赞 30 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43759352/article/details/104521140
今日推荐