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.hutoolgroupId>
            <artifactId>hutool-allartifactId>
            <version>5.8.0version>
        dependency>

FuPage类为自定义类

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

你可能感兴趣的:(mybatis,java,开发语言)