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如下

  • 相关阅读:
    科目一考试顺口溜 假一吊二撤三醉五逃终身酒犯罪
    Intellij IDEA 关闭和开启自动更新提示
    Spring注解之@Autowired:装配构造函数和属性
    Spring注解之@Autowired:Setter 方法上使用@Autowired注解
    Spring注解之@Autowired组件装配
    Spring注解之@Autowired:注入Arrays, Collections, and Maps
    SQL语句between and边界问题
    Spring中几个最常见的注解
    编辑距离(C++)
    回溯法解N皇后问题
  • 原文地址:https://www.cnblogs.com/passedbylove/p/12131470.html
Copyright © 2011-2022 走看看