ssm多表查询不创建实体类返回数据

ssm 多表查询不创建实体类返回数据

开发工具与关键技术:java、IDEA2019、jdk1.8 
作者:Amewin	
撰写时间:2020年4月27日
背景

由于很多时候要多表查询,每次都创建实体类很是费劲,虽然可以在mybatis创建resultMap 自定义返回列,但是配置起来依旧很麻烦。

说明

该方法虽然能较好简化多表查询配置,但是由于HashMap 是线程不安全的,同时有大量用户访问可能会出现性能的未知错误

当然,ssm spring有缓存功能,目前本人测试还未出现未知错误

补充

使用LinkedHashMap 返回也可以,但是LinkedHashMap(线程安全)与 HashMap 性能相差巨大 不建议使用
企业级开发还是建议实体创建

Dao.xml配置如下:

 <select id="selectAllMap" parameterType="amewin.util.Bsgrid"resultType="java.util.HashMap">
        SELECT
        t1.WardID,
        t1.WardMC,
        t1.WardNum,
        t2.SectionID
        t2.SectionMC,
        t2.SectionNum,
        FROM
        sys_ward AS t1 JOIN
        sys_section AS t2 on t1.WardID=t2.WardID order by t1.WardID

    </select>

接口配置

public interface SysSectionDAO  {
    /**
     * 连表分页查询
     * @param section
     * @return
     */
    List<Map<String,Object>> selectAllMap(Bsgrid bsgrid);
}

注意

接口返回类型 List<Map<String,Object>>
不能写成 List<HashMap<String,Object>> 会报错

Service层

 /**
     * 方案二
     *
     * @param sysSection
     * @return map
     */
    public Map<String, Object> selectData(Bgrid bgrid) {

        Map<String, Object>  map = Collections.synchronizedMap(new HashMap<String, Object>());//线程同步

        PageHelper.startPage(bsgrid.getCurPage(), bsgrid.getPageSize());
        List userList = sysSectionDAO.selectData(bsgrid);//获取数据
        PageInfo<List<Map<String, Object>>> pageInfo = new PageInfo(userList);

        sysSection.setPageSize(sysSection.getPageSize());
        map.put("totalRows", pageInfo.getTotal());//总条数
        map.put("pageSize", bsgrid.getPageSize());//当前页条数
        map.put("curPage", bsgrid.getCurPage());//页数
        map.put("data", pageInfo.getList());//分页数据
        map.put("success", true);//状态
        return map;

    }

注意

List userList = sysSectionDAO.selectData(bsgrid);//获取数据
List<Map<String,Object>>userList = sysSectionDAO.selectData(bsgrid);//获取数据
返回类型可以 简化写成 List 也可以写成List<Map<String,Object>>

使用 PageHelper 分页插件 如果不使用 要写两个查询

  • 获取数据
  • 获取总条数
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值