Simple use of Mybatis generator

Sample environment: Eclipse+Springboot+Mybatis+Mysql

One, pom.xml introduces related dependencies

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
         <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>

Second, test the database table

CREATE TABLE `m_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `sex` varchar(5) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;


CREATE TABLE `student` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(200) COLLATE utf8_bin DEFAULT NULL,
  `age` tinyint(3) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Three, database connection configuration (application.properties)

spring.datasource.driverClassName= com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisdemo?characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username= root
spring.datasource.password= root

It should be noted that there can be two types of configuration files in springboot, one is .properties and the other is .yml. The priority of .properties is higher than that of yml. During the loading process, load .yml first, and then load .properties. If there is the same property configuration in it, the latter will overwrite the former.

Fourth, the configuration of 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="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除所有自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver" 
                        connectionURL="jdbc:mysql://localhost:3306/mybatisdemo?serverTimezone=UTC" 
                        userId="root" 
                        password="root">      
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--  entity存放位置 -->
        <javaModelGenerator targetPackage="com.hsw.sps.entity" targetProject="SST/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

         <!--  mapper存放位置 -->
        <sqlMapGenerator targetPackage="com.hsw.sps.dao" targetProject="SST/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- xml文件存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.hsw.sps.dao" targetProject="SST/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

		<table tableName="m_user"  domainObjectName="User"
		           enableCountByExample="false"
		           enableUpdateByExample="false"
		           enableDeleteByExample="false"
		           enableSelectByExample="false"
		           selectByExampleQueryId="false"/>

    </context>
</generatorConfiguration>

Five, eclipse install Mybatis generator plug-in

Six, execute generatorConfig.xml, right-click and select Run as> Run Mybatis Generator

Seven, running results

MyBatis Generator Started...
  Buildfile: H:\workspace\.metadata\.plugins\org.mybatis.generator.eclipse.ui\.generatedAntScripts\SST-generatorConfig.xml.xml
  17:06:27.322 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.eclipse.ui.ant.logging.AntLogFactory - Logging initialized using 'org.mybatis.generator.eclipse.ui.ant.logging.slf4j.Slf4jLoggingLogFactory@66aa684d' adapter.
  17:06:27.337 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.logging.LogFactory - Logging initialized using 'org.mybatis.generator.eclipse.ui.ant.logging.AntLogFactory@2e2bf5b8' adapter.
  Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
  17:06:27.772 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Retrieving column information for table "m_user"
  17:06:27.866 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "id", data type 4, in table "mybatisdemo..m_user"
  17:06:27.866 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "username", data type 12, in table "mybatisdemo..m_user"
  17:06:27.867 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "sex", data type 12, in table "mybatisdemo..m_user"
  17:06:27.867 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "address", data type 12, in table "mybatisdemo..m_user"
  17:06:27.867 [Worker-61: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "birthday", data type 93, in table "mybatisdemo..m_user"
  BUILD SUCCESSFUL
MyBatis Generator Finished

ps: This indicates that com.mysql.jdbc.Driver has been deprecated, and com.mysql.cj.jdbc.Driver should be used

After the execution is successful, you can see that the entity, mapper, and xml of the related table have been created. If the related package is successfully run but not created, the project will be refreshed. If you run mybatis genrtator again at this time, it will continue to be created. Add content to the file, that is, if you want to regenerate it, you need to delete the relevant file and regenerate it.

Eight, in the generatorConfig.xml just now, only the related mapping of the user table is configured, so the related files of the user table are generated. Then there is a student table. Do I need to rewrite the configuration of the student table? So if there are hundreds of tables in the database table, do they all need to be defined manually? The answer is no, mybatis generator can automatically generate all tables under the library, the key configuration is as follows

<table schema="mybatisdemo"  tableName="%"  
                   enableCountByExample="false"  
                   enableUpdateByExample="false"   
                   enableDeleteByExample="false" 
                   enableSelectByExample="false"  
                   selectByExampleQueryId="false"/>

All configuration files

<?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="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除所有自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
                        connectionURL="jdbc:mysql://localhost:3306/mybatisdemo?serverTimezone=UTC" 
                        userId="root" 
                        password="root">
           <property name="nullCatalogMeansCurrent" value="true"/> 
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--  entity存放位置 -->
        <javaModelGenerator targetPackage="com.hsw.sps.entity" targetProject="SST/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

         <!--  mapper存放位置 -->
        <sqlMapGenerator targetPackage="com.hsw.sps.dao" targetProject="SST/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- xml文件存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.hsw.sps.dao" targetProject="SST/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

		 <!--<table tableName="m_user"  domainObjectName="User"
		            enableCountByExample="false"
		            enableUpdateByExample="false"
		            enableDeleteByExample="false"
		            enableSelectByExample="false"
		            selectByExampleQueryId="false"/>-->
          
            <table schema="mybatisdemo"  tableName="%"  
                   enableCountByExample="false"  
                   enableUpdateByExample="false"   
                   enableDeleteByExample="false" 
                   enableSelectByExample="false"  
                   selectByExampleQueryId="false"/>  
    </context>
</generatorConfiguration>

After deleting the file generated in the reverse direction, run it again, and get the following result

MyBatis Generator Started...
  Buildfile: H:\workspace\.metadata\.plugins\org.mybatis.generator.eclipse.ui\.generatedAntScripts\SST-generatorConfig.xml.xml
  18:28:25.319 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.eclipse.ui.ant.logging.AntLogFactory - Logging initialized using 'org.mybatis.generator.eclipse.ui.ant.logging.slf4j.Slf4jLoggingLogFactory@6dadd05b' adapter.
  18:28:25.333 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.logging.LogFactory - Logging initialized using 'org.mybatis.generator.eclipse.ui.ant.logging.AntLogFactory@49970f30' adapter.
  18:28:25.723 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Retrieving column information for table "mybatisdemo.%"
  18:28:25.796 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "id", data type 4, in table "mybatisdemo..m_user"
  18:28:25.796 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "username", data type 12, in table "mybatisdemo..m_user"
  18:28:25.796 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "sex", data type 12, in table "mybatisdemo..m_user"
  18:28:25.796 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "address", data type 12, in table "mybatisdemo..m_user"
  18:28:25.796 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "birthday", data type 93, in table "mybatisdemo..m_user"
  18:28:25.797 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "id", data type 4, in table "mybatisdemo..student"
  18:28:25.797 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "name", data type 12, in table "mybatisdemo..student"
  18:28:25.797 [Worker-10: Launching SST-generatorConfig.xml] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "age", data type -6, in table "mybatisdemo..student"
  BUILD SUCCESSFUL
MyBatis Generator Finished

As you can see, mybatis generator has automatically scanned all the tables in the current database and generated related files in reverse.

 

Guess you like

Origin blog.csdn.net/bai_ye_/article/details/107637626