多表查询没有实体类对其封装该怎么办?

我们在使用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>

此时再看 跟数据库表的顺序就一致了

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值