微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Mybatis时处理PostgreSQL保留关键字的最佳方式是什么

如何解决使用Mybatis时处理PostgreSQL保留关键字的最佳方式是什么

当我在 Postgresql 13 中创建 namepassword 等列时。Postgresql 可能将其视为保留关键字。所以 MyBatis sql 是这样的:

INSERT INTO apple_server_notification_record (created_time,updated_time,notification_type,auto_renew_product_id,auto_renew_status,auto_renew_status_change_date,auto_renew_status_change_date_ms,auto_renew_status_change_date_pst,environment,`password`,bid,bvrs) VALUES (?,?,?)

它会在 sql自动添加``。但是在Postgresql 13中执行sql时,显示这个错误

org.springframework.jdbc.BadsqlGrammarException: 
### Error updating database.  Cause: org.postgresql.util.PsqlException: ERROR: Syntax error at or near "`"
  Position: 249
### The error may exist in class path resource [mybatis/mapper/dolphin/AppleServerNotificationRecordMapper.xml]
### The error may involve com.dolphin.soa.post.dao.AppleServerNotificationRecordMapper.insertSelective-Inline
### The error occurred while setting parameters
### sql: INSERT INTO apple_server_notification_record (created_time,?)
### Cause: org.postgresql.util.PsqlException: ERROR: Syntax error at or near "`"
  Position: 249
; bad sql grammar []; nested exception is org.postgresql.util.PsqlException: ERROR: Syntax error at or near "`"
  Position: 249

我可以通过将列 password 更改为 apple_auth_password解决它,我知道它会解决问题。但是在我的代码中,我必须在接收来自苹果的请求中显式转换映射。我的实体定义如下:

private String password;

有什么好的建议可以解决问题吗?遇到这个问题你会怎么做?

解决方法

您可以更改Mybatis-generator的自动生成器配置代码配置:

  <property name="autoDelimitKeywords" value="true"/>
    <!--
    the beginningDelimiter and endingDelimiter using " by default
    when using PostgreSQL using "
    when using MySQL,we should change to `
     -->
    <property name="beginningDelimiter" value="&quot;"/>
    <property name="endingDelimiter" value="&quot;"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?