记录问题:使用MyBatis+PageHelper报错降级为拼接

文章讲述了在MyBatis配置中,由于字段名如name和connect可能与SQL语法冲突导致报错。作者提供了在XML文件中使用反引号包围这些字段名的解决方案,以避免解析错误。
摘要由CSDN通过智能技术生成

报错信息如下:

17:47:20.743 [https-jsse-nio-8080-exec-9] WARN  c.g.p.p.OrderByParser - [converToOrderBySql,70] - 处理排序失败: net.sf.jsqlparser.JSQLParserException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "," ","
    at line 1, column 16.

Was expecting one of:

    "&"
    "::"
    ";"
    "<<"
    ">>"
    "COLLATE"
    "CONNECT"
    "EMIT"
    "GROUP"
    "HAVING"
    "INTO"
    "START"
    "WINDOW"
    "["
    "^"
    "|"
    <EOF>
,降级为直接拼接 order by 参数
查找问题所在:
查看我的数据库xml文件会发现如下代码:
<resultMap type="YtLawApply" id="YtLawApplyResult">
        <result property="id"    column="id"    />
        <result property="name"    column="name"    />
        <result property="connect"    column="connect"    />
        <result property="argument"    column="argument"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="remark"    column="remark"    />
    </resultMap>

    <sql id="selectYtLawApplyVo">
        select id, name, connect, argument, create_by, create_time, update_by, update_time, remark from yt_law_apply
    </sql>

    <select id="selectYtLawApplyList" parameterType="YtLawApply" resultMap="YtLawApplyResult">
        <include refid="selectYtLawApplyVo"/>
        <where>  
            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
            <if test="connect != null  and connect != ''"> and connect like concat('%', #{connect}, '%')</if>
            <if test="argument != null  and argument != ''"> and argument like concat('%', #{argument}, '%')</if>
        </where>
    </select>
修改代码,解决问题:
<sql id="selectYtLawApplyVo">
        select id, `name`, `connect`, argument, create_by, create_time, update_by, update_time, remark from yt_law_apply
    </sql>
理由:
在MyBatis中,name 和connect可能是作为MyBatis配置或映射文件中的特定属性名或者XML元素名被使用。所以尽量使用user_name,connect_way命名。
对这种可能有冲突的字段名添加反引号(`)解决问题,
避免在大多数情况下产生关键字冲突。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值