筆者的使用mysql數據庫,實體如下
import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.ibatis.type.JdbcType;import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Data @NoArgsConstructor @AllArgsConstructor @Builder @Table(name = "api_ocr_document") public class ApiOCRDocument{ @Id @GeneratedValue(generator = "JDBC") private Long id; private String mimeType; private String hash; private byte[] binary; private String text; private String createTime; }
插入語句生成的sql如下
INSERT INTO api_ocr_document ( id,mime_type,hash,binary,text,create_time ) VALUES( ?,?,?,?,?,? )
放到navicat一看,兩個關鍵字(hash,binary)
解決方法,使用tk.mybatis私有注解ColumnType將字段使用mysql關鍵字·轉義一下
正確代碼如下:
package com.netmarch.web.open.bean; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.ibatis.type.JdbcType; import tk.mybatis.mapper.annotation.ColumnType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Data @NoArgsConstructor @AllArgsConstructor @Builder @Table(name = "api_ocr_document") public class ApiOCRDocument{ @Id @GeneratedValue(generator = "JDBC") private Long id; private String mimeType; @ColumnType(column = "`hash`",jdbcType = JdbcType.VARCHAR) private String hash; @ColumnType(column = "`binary`",jdbcType = JdbcType.BLOB) private byte[] binary; private String text; private String createTime; }
再次生成的sql如下

