mybatis-generator 对表字段类型为 text 的属性处理方法


问题描述:

在使用 mybatis-generator 自动生成插件时,关于 mysql 数据库表中字段类型为 text 的字段无法映射到自动生成的实体类和 Example 类中,且 mpper.xml 文件中存在 jdbcType=“TEXT” 非法类型导致启动程序报错。

错误日志 Mybatis No enum constant org.apache.ibatis.type.JdbcType.TEXT

[xxxxx\*Mapper.xml]; 
nested exception is org.apache.ibatis.builder.BuilderException: 
Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException:
Error resolving JdbcType. Cause: java.lang.IllegalArgumentException:
No enum constant org.apache.ibatis.type.JdbcType.TEXT

根据错误信息查看对应Mapper.xml发现有一个是TEXT类型的

查看Mybatis JdbcType源码

package org.apache.ibatis.type;

import java.sql.Types;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Clinton Begin
 */
public enum JdbcType {
  ARRAY(Types.ARRAY),
  BIT(Types.BIT),
  TINYINT(Types.TINYINT),
  SMALLINT(Types.SMALLINT),
  INTEGER(Types.INTEGER),
  BIGINT(Types.BIGINT),
  FLOAT(Types.FLOAT),
  REAL(Types.REAL),
  DOUBLE(Types.DOUBLE),
  NUMERIC(Types.NUMERIC),
  DECIMAL(Types.DECIMAL),
  CHAR(Types.CHAR),
  VARCHAR(Types.VARCHAR),
  LONGVARCHAR(Types.LONGVARCHAR),
  DATE(Types.DATE),
  TIME(Types.TIME),
  TIMESTAMP(Types.TIMESTAMP),
  BINARY(Types.BINARY),
  VARBINARY(Types.VARBINARY),
  LONGVARBINARY(Types.LONGVARBINARY),
  NULL(Types.NULL),
  OTHER(Types.OTHER),
  BLOB(Types.BLOB),
  CLOB(Types.CLOB),
  BOOLEAN(Types.BOOLEAN),
  CURSOR(-10), // Oracle
  UNDEFINED(Integer.MIN_VALUE + 1000),
  NVARCHAR(Types.NVARCHAR), // JDK6
  NCHAR(Types.NCHAR), // JDK6
  NCLOB(Types.NCLOB), // JDK6
  STRUCT(Types.STRUCT),
  JAVA_OBJECT(Types.JAVA_OBJECT),
  DISTINCT(Types.DISTINCT),
  REF(Types.REF),
  DATALINK(Types.DATALINK),
  ROWID(Types.ROWID), // JDK6
  LONGNVARCHAR(Types.LONGNVARCHAR), // JDK6
  SQLXML(Types.SQLXML), // JDK6
  DATETIMEOFFSET(-155); // SQL Server 2008
}

解决方案:

在相应的 table 标签中 添加如下的标签:

<columnOverride column="*" javaType="java.lang.String" jdbcType="VARCHAR"/>

将*号替换为字段名

声明:Wayen|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - mybatis-generator 对表字段类型为 text 的属性处理方法


-当你感到最无助困难的时候,那就是离成功最近的时候。-Martin Frohm