我们在使用mybatis进行多表查询又不想用resultMap来封装数据,那我们该如何把数据进行封装呢?
此时我们可以使用Map集合来对查询出的数据进行封装;
一条数据直接使用返回Map类型,而多条数据我们可以用List<Map>来对数据进行封装,
Map的key就是数据的数据名 value就是数据的数据值
具体实现方式我们来看一下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qst.springbootmybatis.mapper.UserMapper">
<select id="findDepts" resultType="java.util.Map" >
select * from user,dept where user.id=dept.did
</select>
</mapper>
@Repository
public interface UserMapper {
List<Map> findDepts();
}
具体service 和controller不再编写。
我们来具体看一下结果,它们都是以键值对形式进行存储,键就是数据库表的名,值就是数据库表的值。
数据查询出来了 但你会发现查询出来的数据与数据库中的字段的插入顺序不一样,这是因为Map集合会根据哈希值来排序,如果我们想让他与数据库的顺序一致,我们可以将resultType中的Map修改成LinkedHashMap
<select id="findDepts" resultType="java.util.LinkedHashMap" >
select * from user,dept where user.id=dept.did
</select>
此时再看 跟数据库表的顺序就一致了