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

  • 相关阅读:
    一、常用命令
    八、继承和聚合
    六、生命周期
    七、创建Web工程以及插件原理
    pl/sql developer学习总结
    Oracle创建用户及授权
    Oracle客户端安装
    oracle INS-13001 客户端安装-环境不满足最低要求
    ORA-28001: the password has expired密码过期
    ORA-28000--ORACLE用户被锁
  • 原文地址:https://www.cnblogs.com/passedbylove/p/12131470.html
Copyright © 2011-2022 走看看