jeecgboot 多表连接查询 分页

说明:

jeecgboot 使用的是mybatis plus,在查询时使用条件构造器中的 QueryWrapper 对象来进行完成,该对象中的getCustomSqlSegment()方法是获取自定义SQL的:
在这里插入图片描述
所以,我们使用QueryWrapper构造后在mapper中获取到自定义SQL拼接到我们的联表查询语句之后。

mybatis plus文档地址:mybatis plus querywrapper


代码过程:

我的需求:根据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语句如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44934104/article/details/126618189