Mybatis的逆向工程
在我们做项目的过程中用到mybatis的框架时,有时我们的表较多我们的项目是,一张表对应一个实体类,一个接口,一个映射文件,这时如果我们完全用手来敲代码,一样一样的去创建,去编写,这样我们的工作量就很大,很费时间。所以我们可以用到mybatis的逆向工程来帮助我们完成这些工作。Mybatis的逆向工程的作用就是帮我们生成这些实体类、接口、映射文件,有效的提高了我们的效率。
接下来我们就来看看是这么实现的
首先我们需要用到mysql-connector-java这个jar包,我们可以直接通过maven来在中央仓库里拿到。
然后我们需要编写我们的配置文件,这里的配置文件在http://www.mybatis.org/generator/running/runningWithJava.html网站中有详细的教程,这里面也有mybatis的逆向工程的详细介绍与教程。
然后我们来看看我的配置文件中的代码
代码如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEgeneratorConfiguration
PUBLIC "-//mybatis.org//DTDMyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 配置数据库的连接 -->
<contextid="DB2Tables"targetRuntime="MyBatis3">
<commentGenerator>
<propertyname="suppressAllComments"value="true"/>
</commentGenerator>
<jdbcConnectiondriverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/car_cms"userId="root"
password="lookme">
</jdbcConnection>
<javaTypeResolver>
<propertyname="forceBigDecimals"value="false"/>
</javaTypeResolver>
<!-- 配置实体类的生成路径 -->
<javaModelGeneratortargetPackage="com.huweiyang.bean"targetProject=".\src\main\java">
<propertyname="enableSubPackages"value="true"/>
<propertyname="trimStrings"value="true"/>
</javaModelGenerator>
<!-- 配置映射文件的生成路径 -->
<sqlMapGeneratortargetPackage="Config"targetProject=".\src\main\resources">
<propertyname="enableSubPackages"value="true"/>
</sqlMapGenerator>
<!-- 配置接口的生成路径 -->
<javaClientGeneratortype="XMLMAPPER"
targetPackage="com.huweiyang.dao"targetProject=".\src\main\java">
<propertyname="enableSubPackages"value="true"/>
</javaClientGenerator>
<!-- 配置数据表中生成的实体类的名字与数据表的表名一张表对应一个table标签-->
<tabletableName="after_sale"domainObjectName="After_sale"></table>
<tabletableName="appointment"domainObjectName="Apponintment"></table>
<tabletableName="car_type"domainObjectName="Car_type"></table>
<tabletableName="card"domainObjectName="Card"></table>
<tabletableName="comment"domainObjectName="Comment"></table>
<tabletableName="employee"domainObjectName="Employee"></table>
<tabletableName="expend"domainObjectName="Expend"></table>
<tabletableName="goods"domainObjectName="Goods"></table>
<tabletableName="goods_type"domainObjectName="Goods_type"></table>
<tabletableName="member"domainObjectName="Member"></table>
<tabletableName="orders"domainObjectName="Orders"></table>
<tabletableName="performance"domainObjectName="Performance"></table>
<tabletableName="repertory"domainObjectName="Repertory"></table>
<tabletableName="service_type"domainObjectName="Service_type"></table>
<tabletableName="servicet"domainObjectName="Servicet"></table>
</context>
</generatorConfiguration>
我们的mybatis的逆向工程只需要编写一个配置文件就行了,然后我们来编写我们的测试类,测试类的代码在上面的网站中也有,我就直接将它里面的代码拷贝过来了
代码如下:
package car_cms;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
importorg.mybatis.generator.config.xml.ConfigurationParser;
importorg.mybatis.generator.internal.DefaultShellCallback;
public class Mapping {
publicstatic void main(String[] args) throws Exception, Exception {
List<String> warnings = newArrayList<String>();
boolean overwrite = true;
File configFile = newFile("generatorConfig.xml");
ConfigurationParser cp = newConfigurationParser(warnings);
Configuration config =cp.parseConfiguration(configFile);
DefaultShellCallback callback = newDefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = newMyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}
最后我们只需要运行这个测试类,mybatis就帮我们自动生成了我们需要的实体类、接口、映射文件,在映射文件和接口中,mybatis还帮我们编写了想对应的动态sql,和方法,我们只需要在里面改动点参数与变量,就可以直接使用了特别方便,大大的减少了我们的工作时间,提高了我们的工作效率。
我的项目机构图: