<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<mybatis-generator.version>1.3.2mybatis-generator.version>
<mysql.version>5.1.13mysql.version>
<mybatis.version>3.2.4mybatis.version>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>3.8.1version>
<scope>testscope>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.version}version>
dependency>
<dependency>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-coreartifactId>
<version>${mybatis-generator.version}version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>${mybatis.version}version>
dependency>
dependencies>
<build>
<finalName>mybatis-generatorfinalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-maven-pluginartifactId>
<version>${mybatis-generator.version}version>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.version}version>
dependency>
dependencies>
<executions>
<execution>
<id>Generate MyBatis Artifactsid>
<goals>
<goal>generategoal>
goals>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xmlconfigurationFile>
<verbose>trueverbose>
<overwrite>trueoverwrite>
configuration>
execution>
executions>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<configuration>
<source>1.5source>
<target>1.5target>
<encoding>UTF-8encoding>
configuration>
plugin>
plugins>
pluginManagement>
build>
2.上面说到的generatorConfig.xml文件也是需要我们自己配置的,里面主要配置连接数据库的配置和生成的文件配置信息以及最重要的就是我们要生成的实体类所对应的的表或者试图。
<generatorConfiguration>
<properties resource="mybatis_generator.properties" />
<context id="MBG" targetRuntime="MyBatis3" defaultModelType="conditional">
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
<commentGenerator>
<property name="suppressAllComments" value="false"/>
<property name="suppressDate" value="true" />
<property name="constructorBased" value="false"/>
commentGenerator>
<jdbcConnection
driverClass="${jdbc_driver}"
connectionURL="${jdbc_url}"
userId="${jdbc_username}"
password="${jdbc_password}">
jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
javaTypeResolver>
<javaModelGenerator targetPackage="${modelPackage}" targetProject="${targetProject}">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
javaModelGenerator>
<sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${targetProject}" >
<property name="enableSubPackages" value="true"/>
sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="${daoMapperPackage}" targetProject="${targetProject}" >
<property name="enableSubPackages" value="true"/>
javaClientGenerator>
<table tableName="ecjtu_tab_user" domainObjectName="User" />
context>
generatorConfiguration>
注:该配置文件中有两个要注意的地方:
a、配置文件中的注释应该为:,不能在注释里面再嵌套–之类的符号,比如:
,否则运行时会提示报错信息。
b、标签里面元素是有顺序的,如果顺序乱了也会报错的,顺序依次为:
property——>plugin——>commentGenerator——>jdbcConnection——>
javaTypeResolver——>javaModelGenerator——>sqlMapGenerator——>
javaClientGenerator——>table+
3.对于generatorConfig.xml文件中引入的mybatis_generator.properties文件,里面主要是数据库连接信息和生成的文件的目录信息,我们可以在generatorConfig.xml的同目录下创建该文件:
#数据库配置
#jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
jdbc_url=jdbc:mysql://localhost:3306/test
jdbc_driver=com.mysql.jdbc.Driver
jdbc_username=root
jdbc_password=admin
#执行:右键 Run As ---->Maven build ---->Goals:mybatis-generator:generate
#输出目录
targetProject=src/main/java
#modelPackage,sqlMapperPackage,daoMapperPackage 通常一致
modelPackage=com.ecjtu.generator.entitys
sqlMapperPackage=com.ecjtu.generator.entitys
daoMapperPackage=com.ecjtu.generator.entitys
4.创建好了以上三个文件后,我们再创建一个包路径就可以执行了,也就是在src/main/Java下创建mybatis_generator.properties文件中指定的生成实体的包路径,即上面所指定的com.ecjtu.generator.entitys包,创建好了之后再右键pom.xml文件,Run As —->Maven build —->Goals:mybatis-generator:,执行该操作后刷新以下该项目你所生成的文件就都出现了
这种方式较Maven插件的方式也就是我们自己写一个类在Main方法中去读取generatorConfig.xml文件,然后去生成对应的文件。
既然不用Maven当中的插件,而且是一个普通的Java工程,那么就需要我们自己手动引入相关的Jar包,在src下面新建一个lib文件夹,把用到的jar包复制到该文件夹下面,引入的jar包如下图:
jar包引入好了之后,其他的配置文件跟使用Maven的方式差不多,也是配置generatorConfig.xml文件以及mybatis_generator.properties文件。其中generatorConfig.xml文件和Maven方式唯一不同的就是需要在 标签外指明驱动包的位置:
<classPathEntry location="E:\JavaStudy\DevlopeEnvironment\workspace\MyBatisGeneratorMain\lib\mysql-connector-java-5.1.22-bin.jar" />
3.最后一个也就是创建一个类,在Main方法中读取generatorConfig.xml文件,然后生成相应的文件
package com.ecjtu.generator.main;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
public class GenMain {
public static void main(String[] args) {
List warnings = new ArrayList();
boolean overwrite = true;//如果已经生成过了是否进行覆盖
String genCfg = "/generatorConfig.xml";//配置文件的路径:默认放到src下面
URL url = GenMain.class.getResource(genCfg);
String file = url.getFile();
File configFile = new File(file);
ConfigurationParser cfgParser = new ConfigurationParser(warnings);//配置文件解析器
Configuration config = null;
try {
config = cfgParser.parseConfiguration(configFile);
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
}
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator generator = null;
try {
generator = new MyBatisGenerator(config, callback, warnings);
} catch (InvalidConfigurationException e) {
e.printStackTrace();
}
try {
generator.generate(null);
System.out.println("mybatis 代码生成成功。。。");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
4.最后也就大功告成了,直接右键执行java程序,再刷新一下,生成的文件就都出现了。
到这里,MyBatis基于Maven和普通的Java工程生成实体的两种方式就都介绍完了。。。。。。。。。。。