使用ColumnType注解解決/過濾/轉義tk mybatis插入insertSelective、insert語句中遇到sql關鍵字


筆者的使用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如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM