使用数据库关键字做字段引起的mybatis或tk.mybatis框架报错

报错信息:

Exception Error:

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ‘require ) VALUES( 1,‘xx’,‘dfs’,‘sdf’,‘sdfds’,0 )’ at line 1
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ‘require ) VALUES( 1,‘xx’,‘dfs’,‘sdf’,‘sdfds’,0 )’ at line 1

解决方案:

1.mybatis映射文件中写Sql的时候在关键字加转义符号

例如字段:

name     应该写成   `name`
require  应该写成   `require`

2.tk.mybatis增加注解指定字段加转义符号

@Column(name = "`require`")
private Integer require;
@Column(name = "`name`")
private Integer name;
使用 tk.mybatis 框架时,可以通过使用 @Column 注解来处理 JSON 字段。@Column 注解是 tk.mybatis 提供的一个用于指定数据库字段的注解,可以用于指定字段名、类型、长度等属性。 对于 JSON 类型的字段,可以使用 @Column 注解的 type 属性来指定数据库字段的类型为 JSON。例如: ```java @Column(name = "json_field", type = "json") private String jsonField; ``` 在上述示例中,`jsonField` 字段被标记为 JSON 类型,对应的数据库字段名为 `json_field`。 此外,如果你想要在使用 tk.mybatis 时自动将 JSON 字符串转换为对象,可以使用 tk.mybatis 的自定义类型处理器(TypeHandler)来实现。你可以创建一个继承自 tk.mybatis.mapper.common.BaseTypeHandler<T> 的类型处理器,并在其中实现 JSON 字符串与对象之间的转换逻辑。 以下是一个示例: ```java @MappedTypes(value = YourJsonClass.class) public class JsonTypeHandler extends BaseTypeHandler<YourJsonClass> { private final ObjectMapper objectMapper; public JsonTypeHandler() { objectMapper = new ObjectMapper(); } @Override public void setNonNullParameter(PreparedStatement ps, int i, YourJsonClass parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, objectMapper.writeValueAsString(parameter)); } @Override public YourJsonClass getNullableResult(ResultSet rs, String columnName) throws SQLException { String json = rs.getString(columnName); if (json != null) { try { return objectMapper.readValue(json, YourJsonClass.class); } catch (IOException e) { throw new SQLException("Failed to convert JSON string to object", e); } } return null; } // 其他方法省略... } ``` 在上述示例中,`YourJsonClass` 是你自定义的表示 JSON 字段的类。通过重写 `setNonNullParameter` 和 `getNullableResult` 方法,可以实现将 JSON 字符串转换为对象以及将对象转换为 JSON 字符串的逻辑。 最后,你需要在 MyBatis 的配置文件中注册该类型处理器,以便 tk.mybatis 在处理 JSON 类型字段时能够正确地进行转换。具体的配置方式可以参考 MyBatis 的官方文档或 tk.mybatis 的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值