Mybatis系列教材 (二十六)- 相關概念 - Generator 用法


步驟1:簡介
步驟2:先運行,看到效果,再學習
步驟3:模仿和排錯
步驟4:基於前面的知識點
步驟5:jar
步驟6:配置文件
步驟7:TestMybatisGenerator
步驟8:TestMybatis
步驟9:侷限性 html

步驟 1 : 簡介java

Mybatis Generator是一個用於Mybatis逆向工程的工具。
前面學習的方式都是先有pojo, mapper, xml, 而後再建立表。 mysql

用逆向工程的方式,首先保證數據庫裏有表,而後經過Mybatis Generator生成pojo, mapper和xml。 sql

能夠節約你們的時間,提升開發效率,下降出錯概率數據庫

步驟 2 : 先運行,看到效果,再學習apache

老規矩,先下載下載區(點擊進入)的可運行項目,配置運行起來,確承認用以後,再學習作了哪些步驟以達到這樣的效果。 api

運行 TestMybatisGenerator類,就能夠觀察到pojo,mapper和xml都生成了,而後再運行 TestMybatis 進行查詢測試。 session

如圖所示,運行TestMybatisGenerator以後,刷新項目能夠看到自動生成的相關文件 mybatis

注: CategoryExample 這個是用於多條件查詢的,在TestMybatis中有演示app

先運行,看到效果,再學習

步驟 3 : 模仿和排錯

在確保可運行項目可以正確無誤地運行以後,再嚴格照着教程的步驟,對代碼模仿一遍。
模仿過程不免代碼有出入,致使沒法獲得指望的運行結果,此時此刻經過比較正確答案 ( 可運行項目 ) 和本身的代碼,來定位問題所在。
採用這種方式,學習有效果,排錯有效率,能夠較爲明顯地提高學習速度,跨過學習路上的各個檻。

推薦使用diffmerge軟件,進行文件夾比較。把你本身作的項目文件夾,和個人可運行項目文件夾進行比較。
這個軟件很牛逼的,能夠知道文件夾裏哪兩個文件不對,而且很明顯地標記出來
這裏提供了綠色安裝和使用教程:diffmerge 下載和使用教程

步驟 4 : 基於前面的知識點

基於Mybatis 入門 這個知識點進行

步驟 5 : jar

須要額外的Mybatis Generator jar包(mybatis-generator-core-1.3.5.jar),在下載區(點擊進入)下載,下載後放在lib目錄下,並導入項目

導包辦法:右鍵 project->properties->java build path->libaries->add external jars

步驟 6 : 配置文件

在src目錄下建立generatorConfig.xml

這個配置文件有以下做用
1. 指定 mysql jdbcjar 包的位置,這裏用的位置是 e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar
2. 設置數據庫連接帳號密碼
3. 指定pojo,mapper,xml分別生成的包名
4. 指定表名以及表名對應的類名
4.1 使用自增加鍵:

<property name="my.isgen.usekeys" value="true"/>
<generatedKey column="id" sqlStatement="JDBC"/>

注1:若是IDE(eclipse或者idea) 項目裏導入了jar包,那就不須要麼第一步那樣配置jar包的絕對路徑了

<?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>
    <!--數據庫驅動-->
    <!--
        若是IDE(eclipse或者idea) 項目裏導入了jar包,那麼就不須要配置了jar包的絕對路徑了
         <classPathEntry    location="e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar"/>
    -->
    <context id="DB2Tables"    targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!--數據庫連接地址帳號密碼-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/how2java" userId="root" password="admin">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model類存放位置-->
        <javaModelGenerator targetPackage="com.how2java.pojo" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="com.how2java.pojo" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao類存放位置-->

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.how2java.mapper" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--生成對應表及類名-->
        <table tableName="category_" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false">
            <property name="my.isgen.usekeys" value="true"/>
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>
        <!--         <table tableName="product_" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> -->
    </context>
</generatorConfiguration>

步驟 7 : TestMybatisGenerator

運行成功以後,就會在對應位置生成pojo,xml,和mapper

package com.how2java;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class TestMybatisGenerator {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        InputStream is= TestMybatisGenerator.class.getClassLoader().getResource("generatorConfig.xml").openStream();
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        is.close();
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成代碼成功,刷新項目,查看文件,而後執行TestMybatis.java");
    }
}

步驟 8 : TestMybatis

運行TestMybatis,執行自動生成的mapper,藉助CategoryExample 進行模糊查詢名稱裏出現了9的分類

TestMybatis

package com.how2java;

import java.io.InputStream;
import java.util.List;
//import com.how2java.mapper.CategoryMapper;
//import com.how2java.pojo.Category;
//import com.how2java.pojo.CategoryExample;
//import com.how2java.mapper.CategoryMapper;
//import com.how2java.pojo.CategoryExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.how2java.mapper.CategoryMapper;
import com.how2java.pojo.Category;
import com.how2java.pojo.CategoryExample;
public class TestMybatis {
    public static void main(String args[]) throws Exception {
        System.out.println("先運行TestMybatisGenerator建立mapper,pojo,xml 等文件,而後取消import裏被註釋的,以及接下來的註釋,並執行代碼");
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session=sqlSessionFactory.openSession();
        CategoryExample example = new CategoryExample();
        example.createCriteria().andNameLike("%9%");
        CategoryMapper mapper = session.getMapper(CategoryMapper.class);
        List<Category> cs= mapper.selectByExample(example);
        for (Category c : cs) {
            System.out.println(c.getName());
        }
    }
}

步驟 9 : 侷限性

多對一,一對多須要本身手寫,這個工具目前(20170828版本1.3.5)不提供

更多內容,點擊瞭解: https://how2j.cn/k/mybatis/mybatis-generator/1376.html

相關文章
相關標籤/搜索