MyBatis(五)Map作为parameterType和resultType

sql语句中的ParameterType和resultType可以为:简单数据类型(八种基本数据类型及其包装类,String),也可以为实体类,还可以为集合。

这篇文章就介绍如何使用Map集合给sql语句传值,以及如何使用Map集合封装查询的结果。

为什么会有这种需求呢?有时候JavaBean中的属性已经不能满足我们的结果,如跨表查询时,就不能简单的使用JavaBean来封装结果。

1.使用Map集合给sql语句传值

这个很简单,只要记住一点:Map集合给sql语句传值,参数为:#{Map集合的key}。

简单示例:

<!-- parameterType可以简单的写map或者是Map-->
<select id="selectById2" parameterType="map" resultType="products">
    select * from products where pid = #{pid};
</select>
ProductsMapper mapper = session.getMapper(ProductsMapper.class);
Map<String,Integer> map = new HashMap<>();
//key为pid,那么在xml中的参数就应该为#{pid}
map.put("pid",2);
Products product = mapper.selectById2(map);
System.out.println(product);

结果:

Products{pid=2, pname='新疆大枣', price=38.0, pdate=null, cid='s002'}

2.使用Map集合封装结果

也需要注意一点:从数据库中查询出来的字段,与map集合中的key对应。

简单示例:

<select id="selectById3" parameterType="int" resultType="map">
    select * from products where pid = #{pid};
</select>
ProductsMapper mapper = session.getMapper(ProductsMapper.class);
Map map = mapper.selectById3(2);
Object pname = map.get("pname");
System.out.println(pname);

Set set = map.entrySet();
for (Object o : set) {
    System.out.println(o);
}

结果:

新疆大枣
pname=新疆大枣
price=38.0
pid=2
cid=s002
posted @ 2021-03-18 11:41  deng-hui  阅读(1008)  评论(0编辑  收藏  举报