説明します:
Jeecgboot は mybatis plus を使用し、条件コンストラクターで QueryWrapper オブジェクトを使用してクエリを完成させます. このオブジェクトの getCustomSqlSegment() メソッドはカスタム SQL を取得するためのものです: そこで、QueryWrapper を使用してカスタム SQL を構築し、マッパーでカスタム SQL を取得します SQL を定義し
ます結合テーブルクエリステートメントの後にスプライスされます。
Mybatis とドキュメントのアドレス: mybatis と 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);
}
})
コントローラ:
@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);
}
サービス,サービス実装:
IPage<PayTestresult> pageList(Page<PayTestresult> page, QueryWrapper<PayTestresult> queryWrapper);
@Overridepublic IPage<PayTestresult> pageList(Page<PayTestresult> page, QueryWrapper<PayTestresult> queryWrapper) {
return testresultMapper.getPageList(page, queryWrapper);
}
マッパーレイヤー:
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";
}
マッパー レイヤーの 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 ステートメントは次のとおりです。