学习官网 http://www.mybatis.org/generator/
含有分页的插件
创建一个简单的maven项目 在src/main/java包下 创建一个mbg.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 驱动包(数据库的jar包) -->
<classPathEntry location="D:\mysql-connector-java-5.1.26-bin.jar" />
<!-- targetRuntime开发环境使用的mybatis的版本 -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 连接数据库的四要素 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="123456">
</jdbcConnection>
<!-- 分页插件 -->
<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"></plugin>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 实体类 bean 带有get和set方法的bean -->
<javaModelGenerator targetPackage="cn.et.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sql语句相关的xml或者注解的生成包路径 -->
<sqlMapGenerator targetPackage="cn.et.resource" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成的接口所在的位置
注解
type="ANNOTATEDMAPPER"
xml
type="XMLMAPPER"
-->
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="cn.et.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 数据库名 -->
<table tableName="food">
</table>
</context>
</generatorConfiguration>
在pom.xml中配置 运行maven需要的插件
<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>GBM</groupId>
<artifactId>GBM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>GBM</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 运行maven需要的插件 -->
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>src/main/java/mbg.xml</configurationFile>//指定mbg.xml在项目中的路径
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Oracle数据库,用mybatis-gen.xml 自动生成Java对象的时候,会根据number类型的长度不同生成不同的数据类型
number长度 | Java类型 |
1~4 | Short |
5~9 | Integer |
10~18 | Long |
18+ | BigDecimal |
这样就写了一个类型转换器,需要继承JavaTypeResolver接口
然后在mybaties配置文件generatorConfig.xml中类型转换配置位置添加上即
<javaTypeResolver type="com.generator.MyJavaTypeResolver">
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
mbg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 驱动包(数据库的jar包) -->
<classPathEntry location="D:\mysql-connector-java-5.1.26-bin.jar" />
<!-- targetRuntime开发环境使用的mybatis的版本 -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 连接数据库的四要素 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver type="com.generator.MyJavaTypeResolver">
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 实体类 bean 带有get和set方法的bean -->
<javaModelGenerator targetPackage="cn.et.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sql语句相关的xml或者注解的生成包路径 -->
<sqlMapGenerator targetPackage="cn.et.resource" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成的接口所在的位置
注解
type="ANNOTATEDMAPPER"
xml
type="XMLMAPPER"
-->
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="cn.et.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 数据库名 -->
<table tableName="food">
</table>
</context>
</generatorConfiguration>
类型转换器MyJavaTypeResolver主要代码
public FullyQualifiedJavaType calculateJavaType(
IntrospectedColumn introspectedColumn) {
// TODO Auto-generated method stub
FullyQualifiedJavaType answer;
JdbcTypeInformation jdbcTypeInformation = typeMap
.get(introspectedColumn.getJdbcType());
if (jdbcTypeInformation == null) {
switch (introspectedColumn.getJdbcType()) {
case Types.DECIMAL:
case Types.NUMERIC:
if(introspectedColumn.getScale() > 0)
{//如果包含小数点则转换成float
answer = new FullyQualifiedJavaType(Float.class.getName());
}else{
if ( introspectedColumn.getLength() > 18
|| forceBigDecimals) {
answer = new FullyQualifiedJavaType(BigDecimal.class
.getName());
} else if (introspectedColumn.getLength() > 9) {
answer = new FullyQualifiedJavaType(Long.class.getName());
} else if (introspectedColumn.getLength() > 4) {
answer = new FullyQualifiedJavaType(Integer.class.getName());
} else {
answer = new FullyQualifiedJavaType(Short.class.getName());
}
}
break;
default:
answer = null;
break;
}
} else {
answer = jdbcTypeInformation.getFullyQualifiedJavaType();
}
return answer;
}
以上是生成注解的案例 如要生成xml 上面的mbg.xml有说明 只要改动即可 还要生成一个源文件包 src/main/resources
<!-- 生成的接口所在的位置
注解
type="ANNOTATEDMAPPER"
xml
type="XMLMAPPER"
-->
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="cn.et.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
运行命令 mybatis-generator:generate