前面我写过一个通过插件方式生成Dao接口代码(参考链接地址:https://blog.csdn.net/lichuangcsdn/article/details/80873229),但没找到自定义类型转换的方法,比如
默认是将Mysql中tinyint类型转换为java中的Byte字段,但通常我们需求一般是将tinyint转换为java中的Integer类型,所以需要自己写个类型转换组件了。
主要思路:
一、是重写一个类,继承org.mybatis.generator.internal.types.
JavaTypeResolverDefaultImpl这个类,在构造器中添加如下代码
super.typeMap.put(-6, new JavaTypeResolverDefaultImpl.JdbcTypeInformation("TINYINT", new FullyQualifiedJavaType(Integer.class.getName())));
二、然后在XML配置文件中加入如下配置
<javaTypeResolver type="com.example.plugin.MyJavaTypeResolver">
<property name="forceBigDecimals" value="false"></property>
</javaTypeResolver>
完整代码如下:
1、首先在IDEA中创建好一个 maven工程,pom.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>myproject</name>
<description>Demo project for Spring Boot<