mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题

Posted 社会大哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题相关的知识,希望对你有一定的参考价值。

可能你插入字段为关键字时报如下错误,且字段名不适合改变

You have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near

一.mybatis中

方案一:如果是在xml文件中,插入语句时可以加上` `,例如

<!--批量新增-->
    <insert id="addBatch"  useGeneratedKeys="true" keyProperty="id"  parameterType="com.pct.dotware.pams.entity.EmpStsDetail">
        insert into emp_sts_detail
        (
            `emp_name`,
            `emp_id`,
            `item_id`,
            `item_name`,
            `price_id`,
            `emp_sts`,
            `cus_id`,
            `cus_name`,
            `cus_rank`,
            `start_date`,
            `end_date`,
            `update_date`,
            `remark`
        )
        values
        <foreach item="item" collection="list" open="(" separator="),(" close=")">
            #{item.empName},
            #{item.empId},
            #{item.itemId},
            #{item.itemName},
            #{item.priceId},
            #{item.empSts},
            #{item.cusId},
            #{item.cusName},
            #{item.cusRank},
            #{item.startDate},
            #{item.endDate},
            #{item.updateDate},
            #{item.remark}
        </foreach>
    </insert>

方案二:在实体类中加入注解

@Column(name = "`left`")
private Double left;

二.mybatisPlus中

方案一.加@TableField注解,给上别名加上反单引号,比如

@TableField("`month`")
private String month;

以上是关于mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题的主要内容,如果未能解决你的问题,请参考以下文章

MyBatisPlus

MyBatisPlus常用注解

实体类属性名和数据库表字段名不对应的几种情况以及解决方式

mybatisplus 配置类中怎么给%s自定义

MybatisPlus的BaseMapper和Wrapper使用

MybatisPlus的BaseMapper和Wrapper使用