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

  • 相关阅读:
    django之创建第3个项目:编写第一个模板文件
    django之创建第2个项目
    django之创建第1个项目并查看网页效果
    python 第三库卸载办法
    django之环境变量配置
    数据库中的函数研究
    数据库中的 Date 函数研究
    数据库查询语句研究
    tablib.Dataset()操作exl类型数据之“类方法”研究
    tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
  • 原文地址:https://www.cnblogs.com/passedbylove/p/12131470.html
Copyright © 2011-2022 走看看