欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MyBatis逆向工程——Java代码自动生成

程序员文章站 2022-07-07 20:51:17
关于代码自动生成,网上呢有很多工具,也有不同的方法,MyBatis是我接触到的第一款代码自动生成器,比较简单,代码量也比较少,也比较好理解,好了废话不多说,下面就给大家说一下实现方法及代码解释: 我们新建一个普通的Java项目,这里我使用的工具是idea,是一款很强大的代码编写工具。 首先是要实现代 ......

关于代码自动生成,网上呢有很多工具,也有不同的方法,mybatis是我接触到的第一款代码自动生成器,比较简单,代码量也比较少,也比较好理解,好了废话不多说,下面就给大家说一下实现方法及代码解释:

我们新建一个普通的java项目,这里我使用的工具是idea,是一款很强大的代码编写工具。

首先是要实现代码自动生成所需要的jar包

MyBatis逆向工程——Java代码自动生成

其次编写一个java类

import java.io.file;
import java.io.ioexception;
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.xmlparserexception;
import org.mybatis.generator.internal.defaultshellcallback;

public class generatorsqlmap {

public void generator() throws exception{
    list<string> warnings = new arraylist<string>();
    boolean overwrite = true;
    //指定 逆向工程配置文件
    file configfile = new file("generatorconfig.xml"); 
    configurationparser cp = new configurationparser(warnings);
    configuration config = cp.parseconfiguration(configfile);
    defaultshellcallback callback = new defaultshellcallback(overwrite);
    mybatisgenerator mybatisgenerator = new mybatisgenerator(config,
            callback, warnings);
    mybatisgenerator.generate(null);
} 
public static void main(string[] args) throws exception {
    try {
        generatorsqlmap generatorsqlmap = new generatorsqlmap();
        generatorsqlmap.generator();
    } catch (exception e) {
        e.printstacktrace();
    }
}

}

还有一个配置文件

<!doctype generatorconfiguration
public "-//mybatis.org//dtd mybatis generator configuration 1.0//en"
"">

    <!-- targetproject:生成pojo类的位置 -->
    <javamodelgenerator targetpackage="cn.lht.pojo"
                        targetproject=".\src">
        <!-- enablesubpackages:是否让schema作为包的后缀 -->
        <property name="enablesubpackages" value="false" />
        <!-- 从数据库返回的值被清理前后的空格 -->
        <property name="trimstrings" value="true" />
    </javamodelgenerator>
    <!-- targetproject:mapper映射文件生成的位置 -->
    <sqlmapgenerator targetpackage="cn.lht.mapper"
                     targetproject=".\src">
        <!-- enablesubpackages:是否让schema作为包的后缀 -->
        <property name="enablesubpackages" value="false" />
    </sqlmapgenerator>
    <!-- targetpackage:mapper接口生成的位置 -->
    <javaclientgenerator type="xmlmapper"
                         targetpackage="cn.lht.mapper"
                         targetproject=".\src">
        <!-- enablesubpackages:是否让schema作为包的后缀 -->
        <property name="enablesubpackages" value="false" />
    </javaclientgenerator>

    <!-- 指定数据库表 -->
    <table schema="" tablename="tb_content"></table>
    <table schema="" tablename="tb_content_category"></table>
    <table schema="" tablename="tb_item"></table>
    <table schema="" tablename="tb_item_cat"></table>
    <table schema="" tablename="tb_item_desc"></table>
    <table schema="" tablename="tb_item_param"></table>
    <table schema="" tablename="tb_item_param_item"></table>
    <table schema="" tablename="tb_order"></table>
    <table schema="" tablename="tb_order_item"></table>
    <table schema="" tablename="tb_order_shipping"></table>
    <table schema="" tablename="tb_user"></table>

</context>

注意这个配置文件跟src目录是同级的

具体的代码注释我都在代码里边做了解释

然后运行就可以了

注意:如果你已经运行过一次,但是生成的代码你需要有所改动需要再次生成的话,你必须得把之前已经运行所生成的所有代码以及包结构都删除掉,否则就会出错。

如有意见或者更好的自动生成代码的方法,欢迎评论。