mybatis-plus多表分页联查

解决IPage+ QueryWrapper 多表联查、条件搜素、模糊匹配的分页问题

第一步 Controller层代码,注意这里引入的是mapper层代码,对里面list查询语句重写。
wapper.like(“p.name”,query.get(“produce_name”) );这行代码需要注意,其p.name中的p是关联表的简写。

    @Autowired
    private IntroductionMapper introductionMapper;

    /**
     * 分页查询
     * @param pageBean
     * @return
     */
    @RequestMapping("/list")
    public R list(@RequestBody FuPage pageBean){
        Map<String, String> query = pageBean.getQuery();
        Page<Introduction> page=new Page<>(pageBean.getPageNum(),pageBean.getPageSize());

        QueryWrapper<Introduction> wapper = new QueryWrapper<Introduction>();

        if (StrUtil.isNotBlank(query.get("details_name"))) {
            wapper.like("details_name",query.get("details_name") );
        }
        if (StrUtil.isNotBlank(query.get("produce_name"))) {
            wapper.like("p.name",query.get("produce_name") );
        }

        IPage<Introduction> pageResult = introductionMapper.list(page, wapper);
        Map<String,Object> map=new HashMap<>();
        map.put("list",pageResult.getRecords());
        map.put("total",pageResult.getTotal());
        return R.ok(map);
    }

第二步 Mapper.java 中重写方法 @Param(Constants.WRAPPER)不能少

    /**
     * 列表
     * @return
     */
    public IPage<Introduction> list(Page<Introduction> page, @Param(Constants.WRAPPER) QueryWrapper<Introduction> wapper);

第三步 对应xml代码。其中${ew.customSqlSegment}会自动识别前面wrapper中的查询条件,自动给sql语句后面拼接。

    <select id="list" parameterType="Map" resultMap="IntroductionResult">
        SELECT i.id,i.produce_id,i.user_id,i.details_name,i.details,p.name,p.proPic
        FROM introduction i
        LEFT JOIN t_product p ON i.produce_id = p.id
        ${ew.customSqlSegment}
    </select>

其中 StrUtil.isNotBlank()判断传入参数是否为空
方法从maven引入

        <!--可用于模糊搜索时候,判断字符串是否为空-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.0</version>
        </dependency>

FuPage类为自定义类

public class FuPage {
    private int pageNum; // 第几页
    private int pageSize; // 每页记录数
    private int start;  // 起始页
    private Map<String,String> query; // 查询参数
	// get set toString方法自己生成
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值