mybatis-plus多表查詢

在多表查詢返回結果時:應該如何處理呢?

 第一種:在xml中使用  resultMap 處理,我本人不推薦,因爲(如果一個xml中如果有多個多張表查詢,就得寫多個resultMap與之對應

第二種:返回結果用實體接收,但是返回的是多張表的字段,那就得寫一個實體中包含多張表的所有屬性才能接收,這裏也不建議

第三種:也是準備說的

    1).我們查詢返回的結果無非是一個個的map類型,然後封裝進入List中,看一下xml文件

   

 <!-- 查詢超管列表 -->
  <select id="managerList" resultType="map" >
     SELECT m.*,r.rolename FROM 
         tbl_manager_info m
        INNER JOIN 
           tbl_role_info  r
         ON 
           m.account=r.account
         AND 
           m.type='0'
           <if test="account!=null and account!='' ">
              AND m.account=#{account}
           </if>
          ORDER BY 
             m.createdtime 
           DESC
  </select>

2). java代碼中的mapper,返回的類型我們設置爲List<Map<String,Object>>即可,這裏必須繼承BaseMapper類,才能實現分頁,注意了

    

public interface ManagerMapper extends BaseMapper<TblManagerInfo>{
	//查詢超管列表
	public List<Map<String,Object>> managerList(Pagination page,Map<String,Object> params) throws Exception;

3). service層,記得繼承  IService

public interface ManagerService extends IService<TblManagerInfo>{

	//查詢超管列表
	public Page<Map<String,Object>> managerList(Page<Map<String,Object>> page,Map<String,Object> params)throws Exception;
}

4).service實現類

 

@Service
public class ManagerServiceImpl  extends ServiceImpl<ManagerMapper, TblManagerInfo> implements ManagerService {

	@Autowired
	private ManagerMapper managerDao;
	
	@Override
	public Page<Map<String, Object>> managerList(
			Page<Map<String, Object>> page, Map<String, Object> params)
			throws Exception {
		  return page.setRecords(managerDao.managerList(page, params));
	}

}

5).controller層

  

//超管列表
	@RequestMapping("/admin/queryManagerList")
	@ResponseBody
	public ResultVo queryManagerList(HttpServletResponse response,HttpServletRequest request,
			@RequestParam("page") Integer pageNo,
			@RequestParam("limit") Integer pageSize,
			@RequestParam(value="account",defaultValue="")String account
			) throws Exception{
		//這是我自己定義的封裝類,返回前端的整和
		ResultVo rv=ResultVo.getResultVo();
		try {
			Map<String,Object> params=new WebUtils().getMap();
			params.put("account", account);
            //這個位置開始調用
			Page<Map<String,Object>> page=new Page<Map<String,Object>>(pageNo, pageSize);
			managerService.managerList(page,params);//這裏就得到數據了
			rv.setCount(page.getTotal());//往封裝類存入數據量
			rv.setData(page.getRecords());//往封裝類存入數據
			rv.setCode("0");
		} catch (Exception e) {
			rv.setCode("1");
			e.printStackTrace();
		}
		return rv;
	}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章