MP之自定义分页,多表查询带分页带条件(Error evaluating expression ‘ew.customSqlSegment‘.或 Invalid bound statement)

一、问题

  1. 前端所需数据:在这里插入图片描述

但成绩表中只有考生的id及试卷的id,此时就需要进行多表查询,通过考生的id获取姓名字段,通过试卷的id获取试卷名称。分别需要使用到三张表,成绩表,试卷表,考生表。同时需要做到可以多条件查询,且带分页。


  1. 以前遇到的分页基本都是多条件单表分页,实现起来相对比较容易。现在使用多表带分页带多条件就需要自行进行编写了。

二、具体解决及参考博客

具体参考:https://blog.csdn.net/weixin_38111957/article/details/91554108

  1. 新建一个实体类,包含前端所需的数据实体。在这里插入图片描述
  2. Mapper层接口及xml文件
//Mapper接口层
IPage<CandidateScoreInfoVo> selectMyPage(IPage<CandidateScoreInfoVo> page, @Param(Constants.WRAPPER) Wrapper<CandidateScoreInfoVo> queryWrapper);

//XML具体实现
<select id="selectMyPage" resultType="com.jqh.candidateservice.entity.vo.CandidateScoreInfoVo">
    select
         cs.id as id,
         c.name as candidateName,
         e.paper_name as paperName,
         cs.subj_score as subjScore,
         cs.obj_score as objScore,
         cs.total_score as totalScore,
         cs.gmt_create as gmt_create
    from candidate_score cs
         left join candidate c on cs.candidate_id=c.id
         left join exam_paper e on cs.paper_id=e.id
    ${ew.customSqlSegment}
</select>
  1. 最好进行使用,跟单表多条件分页查询的一致,注意queryWrapper中字段的选择。
		//page对象
		Page<CandidateScoreInfoVo> pageCanScoreInfo=new Page<>(current,limit);
		....
		//这里的字段应选你在Mapper层所需要的字段
        if(!StringUtils.isEmpty(candidateName)){
            queryWrapper.like("c.name",candidateName);
        }
        if(!StringUtils.isEmpty(paperName)){
            queryWrapper.like("e.paper_name",paperName);
        }
        ...
		//进行使用
		baseMapper.selectMyPage(pageCanScoreInfo,queryWrapper);
  1. swagger测试
    在这里插入图片描述
    在这里插入图片描述

三、其他相关问题解决

  1. 'ew.customSqlSegment问题

Error evaluating expression ‘ew.customSqlSegment’. 版本过低,更换版本。
在这里插入图片描述

  1. Invalid bound statement (not found): …问题

编译后找不到mapper.xml文件,即在target中找不到xml的存在,因为maven工程在默认情况下src/main/java目录下的所有资源文件是不发布到target目录下的。

  1. 在pom文件中配置如下节点,并重新加载Maven。
<!-- 项目打包时会将java目录中的*.xml文件也进行打包 -->
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
  1. 在项目配置文件中添加配置,最后重启项目就可以发现target中出现了XML文件。
#配置mapper xml文件的路径
mybatis-plus.mapper-locations=classpath:com/guli/edu/mapper/xml/*.xml
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT学习小镇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值