jeecgboot 多表连接查询 分页
说明:
jeecgboot 使用的是mybatis plus,在查询时使用条件构造器中的 QueryWrapper 对象来进行完成,该对象中的getCustomSqlSegment()方法是获取自定义SQL的: 所以,我们使用QueryWrapper构造后在mapper中获取到自定义SQL拼接到我们的联表查询语句之后。
mybatis plus文档地址:
代码过程:
我的需求:根据openid查询到做过的结果数据,结果数据需要联表查询获取: 前端【小程序】:
wx.request({
          
   
      url: getPayResultListByOpenId,
      data: {
          
   
        pageNo: this.data.page,
        pageSize: this.data.limit,
        openId: wx.getStorageSync(openid)
      },
      success: (res) => {
          
   
       },
      fail: (res) => {
          
   
        console.log(res);
      }
    }) 
controller:
@RequestMapping(value = "getPayResultListByOpenId")
    @ResponseBody
    public Result<?> queryPageList(PayTestresult payTestresult,
                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                   HttpServletRequest req) {
          
   
        QueryWrapper<PayTestresult> queryWrapper = QueryGenerator.initQueryWrapper(payTestresult, req.getParameterMap());
        Page<PayTestresult> page = new Page<PayTestresult>(pageNo, pageSize);
        IPage<PayTestresult> pageList = payTestresultService.pageList(page, queryWrapper);
        return Result.OK(pageList);
    } 
service,serviceimpl:
IPage<PayTestresult> pageList(Page<PayTestresult> page, QueryWrapper<PayTestresult> queryWrapper);
@Overridepublic IPage<PayTestresult> pageList(Page<PayTestresult> page, QueryWrapper<PayTestresult> queryWrapper) {
          
   
        return testresultMapper.getPageList(page, queryWrapper);
} 
mapper层:
IPage<PayTestresult> getPageList(Page page, @Param(MybatisPlusConst.QUERYWRAPPER) Wrapper<PayTestresult> queryWrapper);
MybatisPlusConst是自定义的一个常量类,QUERYWRAPPER是自定义的字段
public class MybatisPlusConst {
          
   
    public static final String QUERYWRAPPER = "ew";
    public static final String SQL = "sql";
} 
mapper层的SQL语句:使用 ${ew.customSqlSegment}获取到自定义的SQL语句,拼接
<select id="getPageList" resultType="org.jeecg.modules.paytest.entity.PayTestresult">
        SELECT b.descp, b.que_count, b.read_num, b.pic AS picPath, a.*
        FROM pay_testresult a
        LEFT JOIN pay_test b ON a.test_id = b.id
        ${ew.customSqlSegment}
    </select> 
结果:
打印出的SQL语句如下:
上一篇:
			            通过多线程提高代码的执行效率例子 
			          
			          
			        
