1. 程式人生 > >MyBatis Generator生成程式碼的四種方式

MyBatis Generator生成程式碼的四種方式

專案目錄如下:dubbo是上一篇部落格裡寫的,程式碼就沒刪可以借鑑學習


由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping對映檔案,但是由於手寫對映檔案很容易出錯,所以可利用MyBatis生成器自動生成實體類、DAO介面和Mapper對映檔案。這樣可以省去一部分的功夫,下面將介紹四種生成方式

需要的jar包:

1.      mybatis-3.2.7.jar

2.      mysql-connector-java-5.1.25-bin.jar

3.      mybatis-generator-core-1.3.2.jar

生成方式有以下幾種:


第一種: 命令列式建立

檔案存放目錄:

命令列首先進到資料夾下面

貼上執行命令:java -jar mybatis-generator-core-1.3.2.jar -configfilegeneratorConfig.xml -overwrite

在配置的路徑下可以看到生成的檔案

generatorConfig.xml配置檔案如下:

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

<!DOCTYPE generatorConfiguration 

 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration1.0//EN" 

 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 

<generatorConfiguration> 

<!-- 資料庫驅動--> 

   <classPathEntry location="mysql-connector-java-5.1.25-bin.jar"/> 

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

       <commentGenerator> 

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

           <!-- 是否去除自動生成的註釋 true:是: false:否 --> 

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

       </commentGenerator> 

       <!--資料庫連結URL,使用者名稱、密碼 --> 

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

       </jdbcConnection> 

       <javaTypeResolver> 

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

       </javaTypeResolver> 

       <!-- 生成模型的包名和位置--> 

       <javaModelGenerator targetPackage="model" targetProject="src/main/java"

           <property name="enableSubPackages" value="true"/> 

<!--             <propertyname="trimStrings" value="true"/>  -->

       </javaModelGenerator> 

       <!-- 生成對映檔案的包名和位置--> 

       <sqlMapGenerator targetPackage="mapper"targetProject="src/main/java"> 

           <property name="enableSubPackages"value="true"/> 

       </sqlMapGenerator> 

       <!-- 生成DAO的包名和位置--> 

       <javaClientGenerator type="XMLMAPPER"targetPackage="dao" targetProject="src/main/java"> 

           <property name="enableSubPackages" value="true"/> 

       </javaClientGenerator> 

       <!-- 要生成的表 tableName是資料庫中的表名或檢視名 domainObjectName是實體類名--> 

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

   </context> 

</generatorConfiguration> 

第二種: IDEA 14中使用mybatis-generator-maven-plugin外掛自動生成MyBatis程式碼

1.        首先需要建立一個Maven專案

2.        修改pom.xml檔案

<build>

       <finalName>generatorConfig.xml</finalName>

        <plugins>

            <plugin>

               <groupId>org.mybatis.generator</groupId>

               <artifactId>mybatis-generator-maven-plugin</artifactId>

               <version>1.3.2</version>

                <configuration>

                   <configurationFile>src\main\resources\conf\generatorConfig.xml</configurationFile>

                   <verbose>true</verbose>

                    <overwrite>true</overwrite>

                </configuration>

                <executions>

                    <execution>

                        <id>GenerateMyBatis Artifacts</id>

                        <goals>

                           <goal>generate</goal>

                        </goals>

                    </execution>

                </executions>

                <dependencies>

                    <dependency>

                       <groupId>org.mybatis.generator</groupId>

                        <artifactId>mybatis-generator-core</artifactId>

                       <version>1.3.2</version>

                    </dependency>

                </dependencies>

            </plugin>

        </plugins>

    </build>

3.        配置Runner>VMOptions 、JRE、Environment variables、Properties

-Dmaven.multiModuleProjectDirectory=$M2_HOME

M2_HOME  D:\Tool\apache-maven-3.3.3

4.        在Intellij IDEA新增一個“Run執行”選項,使用maven執行mybatis-generator-maven-plugin外掛 

之後彈出執行配置框,為當前配置配置一個名稱,這裡其名為"generator",然後在“Command line” 選項中輸入“mybatis-generator:generate  -e

加了“-e ”是為了讓該外掛輸出詳細資訊,這樣可以定位問題

在Run選項中會出現generator選項

5.        配置generatorConfig.xml

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEgeneratorConfiguration

        PUBLIC "-//mybatis.org//DTDMyBatis Generator Configuration 1.0//EN"

       "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <!--匯入屬性配置 -->

    <propertiesresource="\conf\generator.properties"></properties>

    <!--指定特定資料庫的jdbc驅動jar包的位置 -->

    <!--<classPathEntrylocation="C:\\Users\\wanghaiyang\\.m2\\mvn_repository\\mysql\\mysql-connector-java\\5.1.13\\mysql-connector-java-5.1.13.jar"/>-->

    <classPathEntrylocation="${jdbc.driverLocation}"/>

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

        <!-- optional,旨在建立class時,對註釋進行控制-->

        <commentGenerator>

            <propertyname="suppressDate" value="true"/>

            <!-- 是否去除自動生成的註釋true:是: false:否 -->

            <propertyname="suppressAllComments" value="true"/>

        </commentGenerator>

        <!--jdbc的資料庫連線 -->

        <jdbcConnectiondriverClass="${jdbc.driverClass}"connectionURL="${jdbc.connectionURL}"userId="${jdbc.userId}" password="${jdbc.password}">

        </jdbcConnection>

        <!-- <jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost/ome" userId="root"password="123"></jdbcConnection>-->

        <!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制-->

        <javaTypeResolver>

            <propertyname="forceBigDecimals" value="false"/>

        </javaTypeResolver>

        <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類

            targetPackage     指定生成的model生成所在的包名

            targetProject     指定在該專案下所在的路徑

        -->

        <javaModelGeneratortargetPackage="com.dubbo.model"targetProject="src/main/java">

            <!-- 是否對model新增 建構函式 -->

            <propertyname="constructorBased" value="true"/>

            <!-- 是否允許子包,即targetPackage.schemaName.tableName-->

            <propertyname="enableSubPackages" value="false"/>

            <!-- 建立的Model物件是否 不可改變  即生成的Model物件不會有 setter方法,只有構造方法-->

            <propertyname="immutable" value="false"/>

            <!-- 給Model新增一個父類 -->

            <propertyname="rootClass" value="com.dubbo.model"/>

            <!-- 是否對類CHAR型別的列的資料進行trim操作 -->

            <property name="trimStrings"value="false"/>

        </javaModelGenerator>

        <!--Mapper對映檔案生成所在的目錄 為每一個數據庫的表生成對應的SqlMap檔案 -->

        <sqlMapGeneratortargetPackage="com.dubbo.mapper"targetProject="src/main/java">

            <propertyname="enableSubPackages" value="false"/>

        </sqlMapGenerator>

        <!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼

               type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件

                type="MIXEDMAPPER",生成基於註解的JavaModel 和相應的Mapper物件

                type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面

        -->

        <javaClientGeneratortargetPackage="com.dubbo.dao" targetProject="src/main/java"type="XMLMAPPER">

            <propertyname="enableSubPackages" value=""/>

            <!--

                    定義Maper.java 原始碼中的ByExample()方法的可視性,可選的值有:

                    public;

                    private;

                    protected;

                    default

                    注意:如果targetRuntime="MyBatis3",此引數被忽略

             -->

            <propertyname="exampleMethodVisibility" value=""/>

            <!--方法名計數器Important note: this property is ignored if the target runtime isMyBatis3.-->

            <propertyname="methodNameCalculator" value=""/>

            <!--為生成的介面新增父介面-->

            <property name="rootInterface"value=""/>

        </javaClientGenerator>

        <table tableName="user"domainObjectName="User" enableCountByExample="false"enableUpdateByExample="false"

              enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table>

        <!--       <table tableName="user"schema="ome">

                   &lt;!&ndash;optional   , only for mybatis3 runtime

                        自動生成的鍵值(identity,或者序列值)

                      如果指定此元素,MBG將會生成<selectKey>元素,然後將此元素插入到SQLMap的<insert> 元素之中

                      sqlStatement 的語句將會返回新的值

                      如果是一個自增主鍵的話,你可以使用預定義的語句,或者新增自定義的SQL語句. 預定義的值如下:

                         Cloudscape    This will translate to: VALUESIDENTITY_VAL_LOCAL()

                         DB2:      VALUES IDENTITY_VAL_LOCAL()

                         DB2_MF:       SELECT IDENTITY_VAL_LOCAL() FROMSYSIBM.SYSDUMMY1

                         Derby:        VALUES IDENTITY_VAL_LOCAL()

                         HSQLDB:   CALL IDENTITY()

                         Informix:     select dbinfo('sqlca.sqlerrd1') fromsystables where tabid=1

                         MySql:        SELECT LAST_INSERT_ID()

                         SqlServer:    SELECT SCOPE_IDENTITY()

                         SYBASE:   SELECT @@IDENTITY

                         JDBC:     This will configure MBG to generate codefor MyBatis3 suport of JDBC standard generated keys. This is a databaseindependent method of obtaining the value from identity columns.

                         identity: 自增主鍵  If true, then the column is flagged as anidentity column and the generated <selectKey> element will be placedafter the insert (for an identity column). If false, then the generated <selectKey>will be placed before the insert (typically for a sequence).

                   &ndash;&gt;

                   <generatedKeycolumn="" sqlStatement="" identity=""type=""/>

                   &lt;!&ndash;optional.

                           列的命名規則:

                           MBG使用<columnRenamingRule> 元素在計算列名的對應名稱之前,先對列名進行重新命名,

                           作用:一般需要對BUSI_CLIENT_NO前的BUSI_進行過濾

                           支援正在表示式

                            searchString 表示要被換掉的字串

                            replaceString 則是要換成的字串,預設情況下為空字串,可選

                   &ndash;&gt;

                   <columnRenamingRulesearchString="" replaceString=""/>

                   &lt;!&ndash;optional.告訴 MBG 忽略某一列

                           column,需要忽略的列

                          delimitedColumnName:true ,匹配column的值和資料庫列的名稱大小寫完全匹配,false 忽略大小寫匹配

                           是否限定表的列名,即固定表列在Model中的名稱

                   &ndash;&gt;

                   <ignoreColumncolumn="delete" delimitedColumnName="true" />

                  &lt;!&ndash;optional.覆蓋MBG對Model 的生成規則

                        column: 資料庫的列名

                        javaType: 對應的Java資料型別的完全限定名

                        在必要的時候可以覆蓋由JavaTypeResolver計算得到的java資料型別. Forsome databases, this is necessary to handle "odd" database types(e.g. MySql's unsigned bigint type should be mapped to java.lang.Object).

                        jdbcType:該列的JDBC資料型別(INTEGER,DECIMAL, NUMERIC, VARCHAR, etc.),該列可以覆蓋由JavaTypeResolver計算得到的Jdbc型別,對某些資料庫而言,對於處理特定的JDBC 驅動癖好很有必要(e.g. DB2's LONGVARCHAR type should be mapped to VARCHAR foriBATIS).

                        typeHandler:

                   &ndash;&gt;

                   <columnOverridecolumn="" javaType=""   jdbcType="" typeHandler=""  delimitedColumnName="" />

              </table>-->

    </context>

</generatorConfiguration>

6.        配置generator.properties

jdbc.driverLocation=C:\\Users\\wanghaiyang\\.m2\\mvn_repository\\mysql\\mysql-connector-java\\5.1.13\\mysql-connector-java-5.1.13.jar

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.connectionURL=jdbc:mysql://localhost:3306/ome

jdbc.userId=root

jdbc.password=123

7.        選擇generator執行

會在專案資料夾src>main>java下產生配置的資料夾model、mapper、dao

第三種方式 通過MybatisGenerator類和配置檔案生成

1.        配置檔案使用上面的generatorConfig.xml

2.        建立MybatisGeneratorUtil類

importorg.mybatis.generator.api.MyBatisGenerator;

importorg.mybatis.generator.config.Configuration;

importorg.mybatis.generator.config.xml.ConfigurationParser;

importorg.mybatis.generator.exception.InvalidConfigurationException;

importorg.mybatis.generator.exception.XMLParserException;

importorg.mybatis.generator.internal.DefaultShellCallback;

importjava.io.File;

importjava.io.IOException;

importjava.sql.SQLException;

importjava.util.ArrayList;

importjava.util.List;

/**

 * Created by why on 2015/11/29.

 */

publicclass MybatisGeneratorUtil {

    public static void main(String[] args) {

        try {

            System.out.println("startgenerator ...");

            List<String> warnings = newArrayList<String>();

            boolean overwrite = true;

            File configFile = new File(MybatisGeneratorUtil.class.getResource("/conf/generatorConfig.xml").getFile());

            ConfigurationParser cp = newConfigurationParser(warnings);

            Configuration config =cp.parseConfiguration(configFile);

            DefaultShellCallback callback = newDefaultShellCallback(overwrite);

            MyBatisGenerator myBatisGenerator =new MyBatisGenerator(config, callback, warnings);

            myBatisGenerator.generate(null);

            System.out.println("endgenerator!");

        } catch (IOException e) {

            e.printStackTrace();

        } catch (XMLParserException e) {

            e.printStackTrace();

        } catch (InterruptedException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (InvalidConfigurationExceptione) {

            e.printStackTrace();

        }

    }

}

第四種方式 通過GeneratorAntTask類和配置檔案生成

新增類

importorg.mybatis.generator.ant.GeneratorAntTask;

/**

 * Created by why on 2015/11/29.

 */

publicclass AntGenerator {

    public static void main(String[] args) {

        try {

            GeneratorAntTask task = newGeneratorAntTask();

           task.setConfigfile("src/main/resources/conf/generatorConfig.xml");  //(配置檔案具體path)

            task.execute();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

測試生成程式碼的可用性

1.        新增mybatis配置檔案

                   <?xmlversion="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">

                <propertyname="driver" value="com.mysql.jdbc.Driver" />

                <propertyname="url" value="jdbc:mysql://localhost:3306/ome" />

                <propertyname="username" value="root" />

                <propertyname="password" value="123" />

           </dataSource>

       </environment>

   </environments>

   <mappers>

       <mapper resource="UserMapper.xml" ></mapper>

   </mappers>

</configuration>

2.        新建測試類

packagecom.dubbo.testgenerator;

importcom.dubbo.client.UserMapper;

importcom.dubbo.model.User;

importorg.apache.ibatis.io.Resources;

importorg.apache.ibatis.session.SqlSession;

importorg.apache.ibatis.session.SqlSessionFactory;

importorg.apache.ibatis.session.SqlSessionFactoryBuilder;

importjava.io.IOException;

importjava.io.Reader;

/**

 * Created by wanghaiyang on 2015/11/30.

 */

publicclass Test {

    public static void main(String[] args) {

        String resource ="conf/mybatis.xml";

        Reader reader = null;

        try {

            reader =Resources.getResourceAsReader(resource);

        } catch (IOException e) {

            e.printStackTrace();

        }

        SqlSessionFactory sqlMapper = newSqlSessionFactoryBuilder().build(reader);

        SqlSession sqlSession = sqlMapper.openSession();

        try {

            UserMapper mapper =sqlSession.getMapper(UserMapper.class);

            User user =mapper.selectByPrimaryKey(1);

           System.out.println(user.toString());

        } finally {

            sqlSession.close();

        }

    }

}




相關推薦

MyBatis Generator生成程式碼方式

專案目錄如下:dubbo是上一篇部落格裡寫的,程式碼就沒刪可以借鑑學習 由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping對映檔案,但是由於手寫對映檔案很容易出錯,所以可利用MyBatis生成器自動生成實體類、DAO介面和Mapper對映

MyBatis Generator生成程式碼的幾方式

由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping對映檔案,但是由於手寫對映檔案很容易出錯,所以可利用MyBatis生成器自動生成實體類、DAO介面和Mapper對映檔案。這樣可以省去一部分的功夫,下面將介紹幾種生成方式:MyBatis Gen

eclipse下maven外掛用mybatis-generator生成程式碼

眾所眾知,mybatis是半自動的ORM持久化框架,不像hibernate可以全自動根據庫表生產pojo實體類或根據pojo實體類反向生成庫表。 不過我們可以利用maven外掛的mybatis-generator功能生成mybatis的xml對映檔案和資料庫對應的實體類。 下面請看生成程

問題收集:使用mybatis generator生成程式碼報錯,StringIndexOutOfBoundsException異常

問題描述:在使用mybatis 生成程式碼時,報錯 報錯:java.lang.StringIndexOutOfBoundsException: String index out of range: -1  問題解決方案:請檢查 table 標籤下的 domainObj

Mybatis 自動生成程式碼工具(maven方式)

由於MyBatis屬於一種半自動的ORM框架,所以主要的工作將是書寫Mapping對映檔案,但是由於手寫對映檔案很容易出錯,mybatis-gennerator外掛幫我們自動生成mybatis所需要的dao、bean、mapper xml檔案。 1.建立測試工程 選擇maven

mybatis-generator生成逆向工程兩方式

mybatis官方提供了一個逆向工程包,可以針對資料庫表自動生成mybatis執行所需要的Pojo、Mapper xml檔案、Mapper Interface介面檔案。  mybatis-generator有很多種用法:命令列、eclipse/IDEA、Maven外掛,

mybatis Generator生成代碼及使用方式

方法調用 table ima 方便 ack pan 刪除 語句 功能 本文原創,轉載請註明:http://www.cnblogs.com/fengzheng/p/5889312.html 為什麽要有mybatis mybatis 是一個 Java 的 ORM 框

mybatis自動生成程式碼generator

mybatis-generator-core-1.3.2.jar包 編寫genertor的xml檔案,名下:generator.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorCon

MyBatis Generator程式碼自動生成工具 generatorConfig.xml配置檔案詳解

MyBatis Generator官網地址:http://www.mybatis.org/generator/index.html MyBaris Generator中文地址:http://mbg.cndocs.ml/ 在MBG中,最主要也最重要的,就是generatorConfig.xml

Android studio程式碼實現打電話+點選事件方式

?Android系統架構(重點) 第一層:應用層Application 第二層:應用框架層Application Framework 第三層:Android底層類庫層 Libraries、Dalvik虛擬機器 第四層:linux核心層 linux kernel Android是執行在

實現斐波拉契數列的方式python程式碼

斐波那契數列 1. 斐波拉契數列簡介 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契

mybatis逆向工程用idea通過pom外掛generator生成程式碼指令

一。    F:/ideaProject/springboot-mybatis-demo mybatis-generator:generate -e 環境搭建:   pom檔案: <?xml version="1.0" encoding="UTF

SpringBoot 2.x(三):整合Mybatis方式

前言 目前的大環境下,使用Mybatis作為持久層框架還是佔了絕大多數的,下面我們來說一下使用Mybatis的幾種姿勢。 姿勢一:零配置註解開發 第一步:引入依賴 首先,我們需要在pom檔案中新增依賴: 第二步:配置檔案 這裡我們採用yml來進行編寫,與properties檔案相比,yml看

mybatis自動生成程式碼generator.xml的配置

這個我也是才會用,主要是學習了我們老大的【配置】: generator.xml配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//

mybatis generator生成帶有分頁的Mybatis程式碼

MyBatis開發,最讓人開心的就是可以隨意寫SQL,這樣有多好的效能的SQL都可以進行調優。 但是MyBatis的優點也是它的缺點,不論什麼專案都需要編寫SQL,令人頭疼的要命,一般業務(例如單表操作)的簡單查詢、修改、刪除、插入,都需要自己手工去編寫SQL。 還好有第

mybatis generator生成持久層程式碼

mybatis generator的獲取方式 mybatis generator jar包下載地址: http://repo1.maven.org/maven2/org/mybatis/generator/mybatis-generato

Mybatis 載入 Mapper配置的方式

前言 Mybatis 的Mapper 是指Mybatis 執行資料庫操作的介面類以及方法,在非註解模式下,還包含與類對應的 xml 配置檔案。 第一種依據 Mapper 類 具體路徑 配置 Mapper 這種情況下,如果是非註解模式的話xml配置檔案必須和這個類在同一級目錄

mybatis-generator生成model和dao層程式碼

1、建立資料夾myibatisGen 2、下載mybatis-generator-core-1.3.1.jar或者其它版本的jar包,到myibatisGen資料夾下 3、為生成程式碼建立配置檔案“generatorConfig.xml” 4、生成程式碼        ja

mybatis-generator-mysql程式碼自動生成工具

流程:    1、匯入MybatisGenerator專案,在build path中修改jar包位置(mybatis-generator-core-1.3.2和mysql-jdbc)    2、修改generator.xml檔案        a.修改資料庫連線資訊<!

Spring系列教程七: Spring 整合mybatis方式

一、使用採用資料對映器(MapperFactoryBean)的方式註解實現整合mybatis 不用寫mybatis對映檔案,採