zoukankan      html  css  js  c++  java
  • 使用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如下

  • 相关阅读:
    每日一题
    每日一题
    每日一题
    每日一题
    GitLab 部署
    Golang Web开发之Gin入门
    Golang消息队列之NSQ
    Golang操作Redis
    Golang操作MySQL
    Golang Json数据处理方法
  • 原文地址:https://www.cnblogs.com/passedbylove/p/12131470.html
Copyright © 2011-2022 走看看