I use mysql database, the following entities
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 statement generated as follows
INSERT INTO api_ocr_document ( id,mime_type,hash,binary,text,create_time ) VALUES( ?,?,?,?,?,? )
Navicat a look into the two keywords (hash, binary)
Solution, using tk.mybatis private notes ColumnType the field using mysql keyword - escape it
The correct code is as follows:
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 again generated as