mybatis逆向工程学习

什么是逆向工程

mybatis需要自己程序员编写sql语句,mybatis官方提供逆向工程,可以针对单表快速自动生成mybatis执行所需要的代码(mapper.java,mapper.xml,po类…)。在实际开发中,常用逆向工程方式,根据数据库表格生成java代码。

操作步骤

1.导包

在github上下载jar包 https://github.com/yundianzixun/mybatis-generator-1.35.并导入到工程中。

2.完成配置文件

使用java程序结合配置文件的方式完成逆向工程,这样不依赖开发工具,在所有java开发环境都可以生成。首先创建逆向工程配置文件generatorConfig.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>


    <!-- context 是逆向工程的主要配置信息 -->
    <!-- id:起个名字 -->
    <!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 -->
    <context id="testTables" targetRuntime="MyBatis3">
        <!--optional,指在创建class时,对注释进行控制-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--jdbc的数据库连接 wg_insert 为数据库名字-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"
                        userId="root"
                        password="admin"></jdbcConnection>
        <!--非必须,类型处理器,在数据库类型和java类型之间的转换控制-->
        <javaTypeResolver>
            <!-- 默认情况下为false,把jdbc DECIMALNUMERIC类型解析为Integer,true时,解析为java.math.BigDecimal -->
         <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- targetPackage:生成的实体类所在的包 -->
        <!-- targetProject:生成的实体类所在的硬盘位置 -->
        <javaModelGenerator targetPackage="cn.itcast.po"
                            targetProject=".\src">
            <!-- 是否允许子包 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否对modal添加构造函数 -->
            <property name="constructorBased" value="true"/>
            <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
            <property name="trimStrings" value="true"/>
            <!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>
        <!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 -->
        <sqlMapGenerator targetPackage="cn.itcast.mapper"
                         targetProject=".\src">
            <!-- 针对数据库的一个配置,是否把 schema 作为字包名 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.itcast.mapper" targetProject=".\src">
            <!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        
        <!--指定数据库表-->
        <table tableName="items_details"/>
        <table tableName="order"/>
        <table tableName="orderdetail"/>
        <table tableName="user"/>

    </context>
</generatorConfiguration>

重点注意三处:javaModelGenerator的targetPackage为你所想生成的实体类的位置;sqlMapGenerator的targetPackage为mapper映射文件所在的位置;javaClientGenerator的targetPackage为mapper接口所在的位置。

3.执行java生成代码

运行如下java代码即可在对应位置得到所需要的mapper接口,映射配置文件以及对应po类。

@Test
public void generator() throws Exception{
    List<String> warning=new ArrayList<>();
    boolean overwrite=true;
    //指定逆向工程配置文件
    File configFile=new File("src/config/generatorConfig.xml");
    ConfigurationParser cp=new ConfigurationParser(warning);
    Configuration config=cp.parseConfiguration(configFile);
    DefaultShellCallback callback=new DefaultShellCallback(overwrite);
    MyBatisGenerator myBatisGenerator=new MyBatisGenerator(config,callback,warning);
    myBatisGenerator.generate(null);
}

4.运行结果

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值