如何解决使用Mybatis时处理PostgreSQL保留关键字的最佳方式是什么
当我在 Postgresql 13 中创建 name
或 password
等列时。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="""/>
<property name="endingDelimiter" value="""/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。