zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Mybatis逆向工程(模板)

模板mybatis 工程 逆向
2023-06-13 09:16:06 时间

下载必要的jar包

点击→ 下载 密码:8524

配置依赖

<dependencies>
  <!-- 依赖-->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.7</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.7</version>
            <configuration>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
        </plugin>
    </plugins>
</build>

添加配置文件: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>
    <!-- classPathEntry:数据库的 JDBC驱动的jar 包地址 -->
    <classPathEntry
            location="d:\\mysql-connector-java-5.1.32.jar" />
    <context id="caigouTables" targetRuntime="MyBatis3">

        <!-- 配置生成pojo的序列化的插件,mybatis支持很多插件,这些插件都在 org.mybatis.generator.plugins包下  -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://数据库地址:3306/数据库名称" userId="账号"
                        password="密码">
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- targetProject:生成 POJO 类的位置 -->
        <javaModelGenerator targetPackage="cn.itcsdn.pojo.cargo" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema 作为包的后缀 -->
            <property name="enableSubPackages" value="true" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>


        <!-- 生成 XML文件的位置 -->
        <sqlMapGenerator targetPackage="cn.itcsdn.dao.cargo"      targetProject="./src/main/resources">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!--生成接口-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.itcsdn.dao.cargo"  targetProject="./src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>


        <!-- 指定数据库表 可以多配制 -->
        <table  tableName="数据库表名" domainObjectName="生成的类名" mapperName="生成的类的Dao名称"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false"/>
  <!-- 案例:-->
        <table  tableName="cs_contract_product" domainObjectName="ContractProduct" mapperName="ContractProductDao"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false"/>


        <table  tableName="cs_ext_cproduct" domainObjectName="ExtCproduct" mapperName="ExtCproductDao"
               enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false"/>

        <table  tableName="cs_factory" domainObjectName="Factory" mapperName="FactoryDao"
                enableCountByExample="false" enableDeleteByExample="false"
                enableSelectByExample="false" enableUpdateByExample="false"/>


    </context>
</generatorConfiguration>

生成代码

使用配置的插件生成代码

双击后就可以看见生成后的代码了

里面有方法介绍一些:

	/**
     * insert : 全字段保存
     *     不论对象中属性是否为null,都会拼接SQL语句发送到数据库中。效率低
     * insertSelective: 非空字段保存
     *     只会对对象中非空属性字段构造SQL语句。效率高
     */
    @Test
    public void testInsert() {
        Factory factory = new Factory();
        factory.setId("100");
        factory.setFactoryName("测试工厂1234567");
        //factoryDao.insert(factory); //全字段保存
        //factoryDao.insertSelective(factory); //非空字段保存
    }

	/**
     * updateByPrimaryKey : 根据id,全字段更新
     *     不论对象中属性是否为null,都会拼接SQL语句发送到数据库中。属性如果为null,更新数据库中的响应字段数据为空。
     * updateByPrimaryKeySelective: 根据id,非空全字段更新
     */
    @Test
    public void testUpdate() {
        Factory factory = new Factory();
        factory.setId("100");
        factory.setFactoryName("测试工厂1234567");
        //factoryDao.updateByPrimaryKey(factory) ;// 全字段更新,如果对象属性为null,会将数据库表中的字段设置为null
        //factoryDao.updateByPrimaryKeySelective(factory);//非空字段更新,对于非空属性生成更新SQL语句
    }

	/**
     * selectByExample:example查询(条件查询)
     *  * 动态构建的查询
     *  * 参数:XXXExample(是逆向工程自动生成的查询实体类对象)
     *  * XXXExample:
     *      封装了所有的查询条件
     *  使用的语法规则:
     *    1、创建Example对象
     *    2、通过Example创建criteria对象
     *    3、向criteria对象设置查询条件
     *    4、调用dao的selectByExample方法完成查询
     *  案例:
     *      根据ctype查询工厂
     *      SQL:SELECT * FROM co_factory WHERE ctype='货物' AND factory_name='升华'
     */
    @Test
    public void testFind() {
        //1、创建Example对象
        FactoryExample example = new FactoryExample();
        //2、通过Example创建criteria对象
        FactoryExample.Criteria criteria = example.createCriteria();
        //3、向criteria对象设置查询条件 : and + 查询的字段 + 查询方式("参数")
        criteria.andCtypeEqualTo("货物");
        criteria.andFactoryNameEqualTo("升华");
        //4、调用dao的selectByExample方法完成查询
        List<Factory> list = factoryDao.selectByExample(example);
        for (Factory factory : list) {
            System.out.println(factory);
        }
    }