SQLSyntaxEProrException异常产生原因及解决方案

本文讨论了在mybatis-plus中遇到SQLSyntaxErrorException的原因,即SQL语法错误,源于数据库字段名与查询语句不一致。提供了解决方案:调整mybatis-plus的查询语句以匹配字段名。
摘要由CSDN通过智能技术生成

java.sq1.SQLSyntaxEProrException异常产生原因及解决方案

01 异常的发生场景

  • 在我mybatis-plus写了一个查询接口后出现的问题
java.sq1.SQLSyntaxEProrException
  • 日志报错的意思是sql语法问题

    在这里插入图片描述

02 异常的产生及其原因

  • 我最开始又认为是MySQL数据库表设计的问题,但是将SQL语句在Navicat中,查询正常,所以我怀疑是mybatis-plus部分出了问题

  • <resultMap id="sysUserpageMap" type="com.mashang.dao.vo.sysusermscourse.SysUserMsCoursePageVo">
        <id property="msCourseId" column="course_id" ></id>
        <result property="remark" column="remark" ></result>
        <result property="courseName" column="course_name" ></result>
        <result property="teacherName" column="user_name" ></result>
        <result property="courseCover"  column="course_cover" ></result>
    </resultMap>
    <select id="sysUserPage" resultMap="sysUserpageMap">
        SELECT
            t2.remark,
            t2.course_name,
            t1.ms_course_id,
            t2.course_cover,
            t3.user_name
        FROM
            sys_user_ms_course AS t1
                INNER JOIN ms_course AS t2 ON t1.ms_course_id = t2.course_id
                INNER JOIN sys_user AS t3 ON t2.teacher_id = t3.user_id
            ${ew.customSqlSegment}
    </select>
    
  • 测试后确定前端传输的数据没问题

  • 最后发现l简单的问题,数据库字段名和mybatis-plus的查询语句不匹配

03 解决方式

  • 修改mybatis-plus的查询语句
    @Override
    public Page<SysUserMsCoursePageVo> page(Page page, SysUserMsCoursePage sysUserMsCoursePage) {
        QueryWrapper wrapper= Wrappers.query();
        wrapper.eq("t1.sys_user_id",sysUserMsCoursePage.getSysUserId());//这里的字段名问题,造成的SQL语法错误
        wrapper.eq(sysUserMsCoursePage.getTeacherId()!=null,"t2.teacher_id",sysUserMsCoursePage.getTeacherId());
        wrapper.like(!StringUtils.isEmpty(sysUserMsCoursePage.getCourseName()),"t2.course_name",sysUserMsCoursePage.getCourseName());
        return msCourseMapper.sysUserPage(page,wrapper);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宣布无人罪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值