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>
不能写成 List> 会报错

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>userList = sysSectionDAO.selectData(bsgrid);//获取数据
返回类型可以 简化写成 List 也可以写成List>

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

  • 获取数据
  • 获取总条数

你可能感兴趣的:(ssm多表查询不创建实体类返回数据)