maven项目使用逆向工程生成实体类和mapper相关简单配置

  在idea中使用逆向工程插件自动创建实体和mapper接口;

  工具:idea+maven+mysql

  当我们要写一个javaWeb项目时,如果数据库的表多了,用手动输入实体类信息是比较麻烦的,所以下面就介绍一下在maven项目中使用逆向工程方法自动根据数据库信息创建相关实体类。


1、首先需要创建一个maven项目,并将项目中相关的包创建完成,即pojo、dao/mapper等。

2、下载相关依赖,尤其是数据库驱动;

3、首先在pom.xml文件中加入以下依赖,下载插件mybatis-generator-maven-plugin。

 1 <build>
 2         <plugins>
 3             <plugin>
 4                 <groupId>org.mybatis.generatorgroupId>
 5                 <artifactId>mybatis-generator-maven-pluginartifactId>
 6                 <version>1.3.2version>
 7                 <configuration>
 8                 <configurationFile>${basedir}/src/main/resources/generatorConfig.xmlconfigurationFile>
 9                 <overwrite>trueoverwrite>
10                 <verbose>trueverbose>
11             configuration>
12             
13             <dependencies>
14                 <dependency>
15                     <groupId>mysqlgroupId>
16                     <artifactId>mysql-connector-javaartifactId>
17                     <version>8.0.15version>
18                 dependency>
19             dependencies>
20             plugin>
21         plugins>
22     build>

2、在resources资源文件下创建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>
    
    <properties resource="jdbc.properties"/>
    
    <classPathEntry location="/Users/lijincheng/mavenJar/repository/mysql/mysql-connector-java/8.0.15"/>

    <context id="default" targetRuntime="MyBatis3">

        
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        commentGenerator>

        
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/jwzx"
                userId="root"
                password="root">
        jdbcConnection>


        
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        javaTypeResolver>


        
        <javaModelGenerator targetPackage="com.mysjz.pojo"
                            targetProject="src/main/java">

            
            <property name="enableSubPackages" value="false"/>
            
            <property name="constructorBased" value="true"/>
            
            <property name="trimStrings" value="true"/>
            
            <property name="immutable" value="false"/>
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="resources/mapperxmlconfig"
                         targetProject="src/main">
            <property name="enableSubPackages" value="false"/>
        sqlMapGenerator>

        
        <javaClientGenerator targetPackage="com.mysjz.mapper"
                             targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        javaClientGenerator>

        <table tableName="mgr" domainObjectName="Mgr"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">

            
            <columnOverride column="username">
                
                
                

                

                

                
            columnOverride>
            
        table>

        <table tableName="teacher" domainObjectName="Teacher"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        table>
        <table tableName="proctor" domainObjectName="Proctor"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        table>

    context>
generatorConfiguration>

在配置table标签里的内容时,可以考虑以下东西:

选择一个table来生成相关文件,可以有一个或多个table,必须要有table元素
        选择的table会生成一下文件:
        1SQL map文件
        2,生成一个主键类;
        3,除了BLOB和主键的其他字段的类;
        4,包含BLOB的类;
        5,一个用户生成动态查询的条件类(selectByExample, deleteByExample),可选;
        6,Mapper接口(可选)

        tableName(必要):要生成对象的表名;
        注意:大小写敏感问题。正常情况下,MBG会自动的去识别数据库标识符的大小写敏感度,在一般情况下,MBG会
            根据设置的schema,catalog或tablename去查询数据表,按照下面的流程:
            1,如果schema,catalog或tablename中有空格,那么设置的是什么格式,就精确的使用指定的大小写格式去查询;
            2,否则,如果数据库的标识符使用大写的,那么MBG自动把表名变成大写再查找;
            3,否则,如果数据库的标识符使用小写的,那么MBG自动把表名变成小写再查找;
            4,否则,使用指定的大小写格式查询;
        另外的,如果在创建表的时候,使用的""把数据库对象规定大小写,就算数据库标识符是使用的大写,在这种情况下也会使用给定的大小写来创建表名;
        这个时候,请设置delimitIdentifiers="true"即可保留大小写格式;

        可选:
        1,schema:数据库的schema;
        2,catalog:数据库的catalog;
        3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
        4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
        5,enableInsert(默认true):指定是否生成insert语句;
        6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
        7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
        8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
        9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
        10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
        11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
        12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
        13,modelType:参考context元素的defaultModelType,相当于覆盖;
        14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
        15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性

        注意,table里面很多参数都是对javaModelGenerator,context等元素的默认属性的一个复写;

生成主键的方法

如果设置了该元素,MBG会在生成的元素中生成一条正确的元素,该元素可选
            column:主键的列名;
            sqlStatement:要生成的selectKey语句,有以下可选项:
                Cloudscape:相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
                DB2       :相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
                DB2_MF    :相当于selectKey的SQL为:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
                Derby     :相当于selectKey的SQL为:VALUES IDENTITY_VAL_LOCAL()
                HSQLDB    :相当于selectKey的SQL为:CALL IDENTITY()
                Informix  :相当于selectKey的SQL为:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
                MySql     :相当于selectKey的SQL为:SELECT LAST_INSERT_ID()
                SqlServer :相当于selectKey的SQL为:SELECT SCOPE_IDENTITY()
                SYBASE    :相当于selectKey的SQL为:SELECT @@IDENTITY
                JDBC      :相当于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty属性
        "" sqlStatement=""/>

基本上就差不多了,如果需要了解更多关于这个配置的信息可以百度。

3、上面过程完成后。点击idea右侧maven,找到mybatis-generator插件,点击运行

 maven项目使用逆向工程生成实体类和mapper相关简单配置_第1张图片

 

结果如下图:

maven项目使用逆向工程生成实体类和mapper相关简单配置_第2张图片

 


完毕,亲测好用 

你可能感兴趣的:(maven项目使用逆向工程生成实体类和mapper相关简单配置)