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

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

写在前面

  由于数据库表字段名称设计不合理,导致与MySQL数据库关键字或者预留关键字一致,在这种情况下,将会导致数据插入不成功,这里主要针对Mybatis和MybatisPlus提出对应的解决方案,仅供参考!

一、Mybatis中解决方案

1、针对XML文件,可以在冲突的字段名添加 ` ` ( 反单引号在 键盘Esc键下面的那个,注意切换英文输入法 ) 引起来,如下所示:

<insert id="addParam"  useGeneratedKeys="true" keyProperty="id"  parameterType="com.pct.dotware.pams.entity.SysParam">
        insert into sys_param
        (
            `key`,
            `value`,
            `status`,
            `create_by`,
            `create_time`,
            `remark`
        )
        values(
            #{item.key},
            #{item.value},
            #{item.status},
            #{item.createBy},
            #{item.createTime},
            #{item.remark}
        )
</insert>        

2、如果不想修改xml文件,也可针对实体类进行修改,可以通过添加@Column注解,如下所示:

@Column(name = "`key`")
private String key;

针对Mybatis,以上两种任选其一即可。

二、MybatisPlus解决方案

对于MybatisPlus解决就很简单了,直接在实体类上添加  @TableField 注解,给上别名加上反单引号即可。如下所示:

@TableFiled(name = "`key`")
private String key;

附录:

  MySQL关键字列表:

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2238.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 成为java架构师需要具备那些技能?

    成为java架构师需要具备那些技能?架构师定义百度百科,系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。架构师工作职能软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员

    2022年7月8日
    17
  • 浅谈FTP,SFTP,FTPS区别「建议收藏」

    浅谈FTP,SFTP,FTPS区别

    2022年2月13日
    42
  • zotero使用教程视频_anaconda使用教程

    zotero使用教程视频_anaconda使用教程之前一直想有一个管理文献的好工具,但囿于麻烦都没有去做。最近需要阅读大量的文献,便重新拾起了这个念头,在几经搜索后,选定了Zotero作为文献管理工具。至于为什么选择这个软件,我也许并说不清,网上有

    2022年8月3日
    6
  • Modelsim-win32-6.6d 破解安装教程

    Modelsim-win32-6.6d 破解安装教程1、准备文件  modelsim-win32-6.6d-se.exe 2、安装步骤·(安装前把杀毒软件关闭)双击文件 modelsim-win32-6.6d-se.exe(注:安装路径不要有中文)点击Next 点击Browser ,建议安装目录改成自己新建在D盘下  点击Next—-&gt;Agree —–&gt;等待安装 安…

    2022年5月10日
    59
  • 【P2P】【转载】P2P流媒体开源项目介绍[通俗易懂]

    大神的整理P2P流媒体开源项目介绍前言:最近在做一个网站,发现p2p流媒体技术对于解决高流量高带宽问题真的很不错。据说现在一些视频和直播公司在研究p2p+cdn,证明了p2p永不过时。先记录先来,有时间慢慢研究PeerCast2002年成立,最早的开源P2P流媒体项目。PeerCast把节点按树结构组织起来,每个频道都是一个树,直播源是根节点,父节点只给子节点提供数据。节点离根节点越远,传输时延就越大,所以树的深度应该尽可能短,但节点有限的上行带宽限制了节点的宽度。Tribler..

    2022年4月16日
    72
  • Framework7 Vue 教程 入门 学习

    Framework7 Vue 教程 入门 学习网上关于Framework7的博客、学习资料少之又少,所以我想把我学习Framework7Vue的入门记录一下。Framework7Framework7是一个开源免费的框架可以用来开发混合移动应用(原生和HTML混合)或者开发iOS&Android风格的WEBAPP。也可以用来作为原型开发工具,可以迅速创建一个应用的原型。Framework7最主要的功能是可以…

    2022年6月3日
    190

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号