天天看點

mybatis中的 mybatis-generator:generate 代碼生成器的使用

mybatis當中 有 非常友善快捷使用的 generator,代碼生成器,友善開發者使用

具體使用方法如下:

首先,我們建立一個maven項目,如下圖所示:

mybatis中的 mybatis-generator:generate 代碼生成器的使用

pom.xml 檔案中進行如下的配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mybatisGenerator</groupId>
  <artifactId>mybatisGeneratortest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  
  
  
  	
  	<!-- 配置檔案  -->
  	<properties>
        <java.version>1.8</java.version>
        <java.encoding>UTF-8</java.encoding>
    </properties>
  
  
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>

    
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>5.1.26</version>
         </dependency>
         
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.3</version>
                <configuration>
                    <configurationFile>src/test/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
            
            <!-- 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${java.encoding}</encoding>
                    <compilerArguments>
                        <extdirs>lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>
             -->
            
        </plugins>
        
        
    </build>
  
</project>
           

mybatis-config.xml 主配置檔案如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

  
	<environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        
      </dataSource>
    </environment>
  </environments>
  
  
  <mappers>
  	<mapper resource="com/zwz/mapper/UserMapper.xml" />
  </mappers>
	
</configuration>

           

生成器配置 xml檔案 generatorConfig.xml檔案:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <classPathEntry location="F:\myeclipse_workspace\gupao-springmvc\gupao-generator\src\main\resources\mybatis\mysql-connector-java-5.1.8.jar"/>

    <context id="MysqlTables" targetRuntime="MyBatis3">
        <!--去除注釋  -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

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

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

        <javaModelGenerator targetPackage="com.zwz.entity" targetProject="F:\myeclipse_workspace\mybatisGeneratortest\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="com.zwz.mapper" targetProject="F:\myeclipse_workspace\mybatisGeneratortest\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.zwz.dao" targetProject="F:\myeclipse_workspace\mybatisGeneratortest\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


	<!--  想要逆向生成的表在這裡進行配置   -->
		<table schema="gp" tableName="user" domainObjectName="User">
            <property name="useActualColumnNames" value="false"/>
            <!--<generatedKey column="ID" sqlStatement="DB2" identity="true"/>-->
            <columnOverride column="DATE_FIELD" property="startDate"/>
            <ignoreColumn column="FRED"/>
            <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR"/>
        </table>


    </context>
</generatorConfiguration>
           

在項目中右鍵,run as --> maven build ,然後在 goals當中輸入 mybatis-generator:generate,于是便可以看到 在相對應配置的包目錄下生成了對應的 實體類,Mapper檔案,Mapper.xml檔案,如下:

mybatis中的 mybatis-generator:generate 代碼生成器的使用

最後一步,編寫測試類進行mybatis的測試:

mybatisDemo檔案如下:

package com.zwz.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.zwz.dao.UserMapper;
import com.zwz.entity.User;


public class MybatisDemo {

	//擷取到sqlSession
	public static SqlSession getSqlSession() throws Exception{
		InputStream configFile = new FileInputStream(
                "F:\\myeclipse_workspace\\mybatisGeneratortest\\src\\test\\resources\\mybatis-config.xml");
		
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configFile);
        
        //加載配置檔案得到SqlSessionFactory
        return sqlSessionFactory.openSession();
	}
	
	public static void main(String[] args) throws Exception {
		
		SqlSession sqlSession = getSqlSession();
		
		UserMapper um = sqlSession.getMapper(UserMapper.class);
		
		User user = um.selectByPrimaryKey("2");
		
		System.out.println(  user.getName() );
		
	}
	
}
           

測試後輸出正确結果,是資料庫當中的資訊。

生成了代碼之後,可以在此基礎上使用  UserExample的  Criteria  進行結果的查詢,查詢的代碼如下:

public static void main(String[] args) throws Exception {
	
		UserExample userExample = new UserExample(); 
		
		userExample.setOrderByClause("id desc"); //設定排序規則
		
		userExample.createCriteria().andAgeBetween("2", "3");	//建立 Criteria 并且設定查詢規則
		
		UserMapper um = getSqlSession().getMapper( UserMapper.class ); //設定好了之後從 SqlSession 中擷取到這個 UserMapper的執行個體對象
		
		List<User>list = um.selectByExample(userExample);	//查詢執行個體
	
		for(User u:list){
			System.out.println( u.getName() );
		}
		
		userExample.clear();	//執行了這句clear之後代表着 userExample接下來就可以進行複用了,不受之前添加條件的影響
	
		System.out.println("--------------------------------");
		
		
		userExample.createCriteria().andIdGreaterThan("2");
		UserMapper um1 = getSqlSession().getMapper( UserMapper.class );
		
		List<User>list2 = um1.selectByExample(userExample);
	
		for(User u:list2){
			System.out.println( u.getName() );
		}
		
	}
           

繼續閱讀