IDEA--生成POJO類及配置檔案

BtWangZhi發表於2017-10-14

1 Hibernate根據表結構生成POJO。
參考部落格:
http://www.cnblogs.com/yangyquin/p/5438248.html
1.1 生成Hibernate.cfg.xml。
FileProject Structure-》Facets點選加號新增Hibernate.具體步驟如下。
這裡寫圖片描述
1.2 配置資料來源
View->Tool View->點選加號即可新增資料庫
這裡寫圖片描述
1.3 生成POJO檔案
View->Tool View->Persistener.在檢視中點選Hibernate.cfg.xml前面有一個資料庫的小logo,點選-》Generate Persistener Mapping->By Database Schema具體如下:
這裡寫圖片描述
生成的檔案如下
這裡寫圖片描述

2 根據表結構生成Mybatis相關的pojo和mapper檔案
參考:
http://www.cnblogs.com/ningheshutong/p/6376970.html
http://blog.csdn.net/sunny243788557/article/details/45166397
建立一個Maven專案,在pom.xml中新增如下程式碼:

<!--外掛-->
    <plugins>
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
          <!--配置檔案的位置-->
        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
        <dependencies>
            <dependency>
               <groupId>org.mybatis.generator</groupId>
                  <artifactId>mybatis-generator-core</artifactId>
                  <version>1.3.5</version>
             </dependency>
        </dependencies>
      </plugin>
    </plugins>

在resource中建立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="generator.properties"></properties>

    <!--指定特定資料庫的jdbc驅動jar包的位置 -->
    <classPathEntry location="${jdbc.driverLocation}"/>

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

        <!-- optional,旨在建立class時,對註釋進行控制 -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!--jdbc的資料庫連線 -->
        <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}"
                        password="${jdbc.password}">
        </jdbcConnection>

        <!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
            targetPackage     指定生成的model生成所在的包名
            targetProject     指定在該專案下所在的路徑
        -->
        <javaModelGenerator targetPackage="com.demo.pojo" targetProject="src/main/java">
            <!-- 是否對model新增 建構函式 -->
            <property name="constructorBased" value="true"/>

            <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="false"/>

            <!-- 建立的Model物件是否 不可改變  即生成的Model物件不會有 setter方法,只有構造方法 -->
            <!--<property name="immutable" value="true"/>-->

            <!-- 給Model新增一個父類 -->
            <property name="rootClass" value="java.io.Serializable"/>

            <!-- 是否對類CHAR型別的列的資料進行trim操作 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--Mapper對映檔案生成所在的目錄 為每一個資料庫的表生成對應的SqlMap檔案 -->
        <sqlMapGenerator targetPackage="com.demo.pojo.sql" targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼
                type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件
                type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper物件
                type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面
        -->
        <javaClientGenerator targetPackage="com.demo.dao" targetProject="src/main/java" type="MIXEDMAPPER">
            <property name="enableSubPackages" value=""/>
            <!--
                    定義Maper.java 原始碼中的ByExample() 方法的可視性,可選的值有:
                    public;
                    private;
                    protected;
                    default
                    注意:如果 targetRuntime="MyBatis3",此引數被忽略
             -->
            <property name="exampleMethodVisibility" value=""/>
            <!--
                                           方法名計數器
              Important note: this property is ignored if the target runtime is MyBatis3.
             -->
            <property name="methodNameCalculator" value=""/>

            <!--
                                                為生成的介面新增父介面
             -->
            <property name="rootInterface" value=""/>
        </javaClientGenerator>

        <!--<table tableName="lession" schema="louis">
            &lt;!&ndash; optional   , only for mybatis3 runtime
                 自動生成的鍵值(identity,或者序列值)
               如果指定此元素,MBG將會生成<selectKey>元素,然後將此元素插入到SQL Map的<insert> 元素之中
               sqlStatement 的語句將會返回新的值
               如果是一個自增主鍵的話,你可以使用預定義的語句,或者新增自定義的SQL語句. 預定義的值如下:
                  Cloudscape    This will translate to: VALUES IDENTITY_VAL_LOCAL()
                  DB2:      VALUES IDENTITY_VAL_LOCAL()
                  DB2_MF:       SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
                  Derby:        VALUES IDENTITY_VAL_LOCAL()
                  HSQLDB:   CALL IDENTITY()
                  Informix:     select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
                  MySql:        SELECT LAST_INSERT_ID()
                  SqlServer:    SELECT SCOPE_IDENTITY()
                  SYBASE:   SELECT @@IDENTITY
                  JDBC:     This will configure MBG to generate code for MyBatis3 suport of JDBC standard generated keys. This is a database independent method of obtaining the value from identity columns.
                  identity: 自增主鍵  If true, then the column is flagged as an identity column and the generated <selectKey> element will be placed after the insert (for an identity column). If false, then the generated <selectKey> will be placed before the insert (typically for a sequence).

            &ndash;&gt;
            <generatedKey column="" sqlStatement="" identity="" type="" />

            &lt;!&ndash; optional.
                    列的命名規則:
                    MBG使用 <columnRenamingRule> 元素在計算列名的對應 名稱之前,先對列名進行重新命名,
                    作用:一般需要對BUSI_CLIENT_NO 前的BUSI_進行過濾
                    支援正在表示式
                     searchString 表示要被換掉的字串
                     replaceString 則是要換成的字串,預設情況下為空字串,可選
            &ndash;&gt;
            <columnRenamingRule searchString="" replaceString=""/>

            &lt;!&ndash; optional.告訴 MBG 忽略某一列
                    column,需要忽略的列
                    delimitedColumnName:true ,匹配column的值和資料庫列的名稱 大小寫完全匹配,false 忽略大小寫匹配
                    是否限定表的列名,即固定表列在Model中的名稱
            &ndash;&gt;
            <ignoreColumn column="PLAN_ID" delimitedColumnName="true"/>

            &lt;!&ndash;optional.覆蓋MBG對Model 的生成規則
                 column: 資料庫的列名
                 javaType: 對應的Java資料型別的完全限定名
                 在必要的時候可以覆蓋由JavaTypeResolver計算得到的java資料型別. For some 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 for iBATIS).
                 typeHandler:
            &ndash;&gt;
            <columnOverride column="" javaType="" jdbcType="" typeHandler="" delimitedColumnName=""/>
        </table>-->

        <!-- 配置表
            schema:不用填寫
            tableName: 表名
            enableCountByExample、enableSelectByExample、enableDeleteByExample、enableUpdateByExample、selectByExampleQueryId:
            去除自動生成的例子
        -->
        <table schema="" tableName="user" enableCountByExample="true" enableSelectByExample="true"
               enableDeleteByExample="true" enableUpdateByExample="true" selectByExampleQueryId="true" >

        </table>
    </context>
</generatorConfiguration>

各個標籤詳細說明地址:

http://blog.csdn.net/lovesummerforever/article/details/50266009
http://www.cnblogs.com/Erma-king/p/6694516.html

建立generator.properties檔案:

jdbc.driverLocation=D:\\ProgramFiles\\mysql-connector-java-5.1.41-bin.jar
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&amp;useSSL=true
jdbc.userId=root
jdbc.password=123123

Edit Configuration-》左側點選加號新增Maven。具體如下:
這裡寫圖片描述
然後即可在右上角中看到如下紅框框
這裡寫圖片描述
點選旁邊的run按鈕即可生成mybatis相關的檔案。
這裡寫圖片描述
或者執行右側的maven外掛中的命令:
這裡寫圖片描述
附出現的問題,在設定需要生成的pojo的表時,

中的子標籤generatedKey沒設定具體的相關的值會報錯:

<generatedKey column="" sqlStatement="" identity="" type="" />

控制檯報的錯:

SQL Statement is required if a generated key is specified in table configura

可對於要生成pojo的表的說明可直接採用如下的方式:

<table schema="" tableName="user" enableCountByExample="true" enableSelectByExample="true"
               enableDeleteByExample="true" enableUpdateByExample="true" selectByExampleQueryId="true" >

        </table>

會自動生成如下方法:
這裡寫圖片描述

相關文章