1. 程式人生 > >Mybatis 三劍客之Mybatis-generator配置

Mybatis 三劍客之Mybatis-generator配置

Mybatis-generator 的作用:根據資料庫自動生成 pojo、dao 和對應的 xml 檔案,其中:
pojo :放置和資料庫欄位一一對應的物件;
dao :介面,供 service 呼叫;
xml :dao 層介面的實現;

pom 配置

在 < plugins > 標籤下新增 mybatis-generator 外掛需要的jar包:

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId
>
<version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin>

generatorConfig.xml 配置

在 resources 目錄下建立 generatorConfig.xml 檔案和 datasource.properties 檔案,結合自己的資料庫進行配置

  • 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="datasource.properties"/> <!--指定特定資料庫的jdbc驅動jar包的位置,非必需--> <!--<classPathEntry location="D:\generator_mybatis\mysql-connector-java-5.1.24-bin.jar"/>--> <context id="default" targetRuntime="MyBatis3"> <!-- optional,旨在建立class時,對註釋進行控制 --> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--jdbc的資料庫連線 --> <jdbcConnection driverClass="${db.driverClassName}" connectionURL="${db.url}" userId="${db.username}" password="${db.password}"> </jdbcConnection> <!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制--> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類 targetPackage 指定生成的model生成所在的包名 targetProject 指定在該專案下所在的路徑 --> <javaModelGenerator targetPackage="com.mmall.pojo" targetProject="./src/main/java"> <!-- 是否允許子包,即targetPackage.schemaName.tableName --> <property name="enableSubPackages" value="false"/> <!-- 是否對model新增 建構函式 --> <property name="constructorBased" value="true"/> <!-- 是否對類CHAR型別的列的資料進行trim操作 --> <property name="trimStrings" value="true"/> <!-- 建立的Model物件是否 不可改變 即生成的Model物件不會有 setter方法,只有構造方法 --> <property name="immutable" value="false"/> </javaModelGenerator> <!--mapper對映檔案生成所在的目錄 為每一個數據庫的表生成對應的SqlMap檔案 --> <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources"> <property name="enableSubPackages" value="false"/> </sqlMapGenerator> <!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼 type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件 type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper物件 type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面 --> <!-- targetPackage:mapper介面dao生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject="./src/main/java"> <!-- enableSubPackages:是否讓schema作為包的字尾 --> <property name="enableSubPackages" value="false"/> </javaClientGenerator> <!--tableName:對應資料庫表名; domainObjectName:生成java類的類名; enableCountByExample:是否可以通過物件查新數量; enableUpdateByExample:是否可以通過物件進行update; columnOverride:對欄位型別進行轉換 --> <table tableName="table_a" domainObjectName="tableA" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> <table tableName="table_b" domainObjectName="tableB" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> <table tableName="table_c" domainObjectName="tableC" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <columnOverride column="column_a" jdbcType="VARCHAR"/> <columnOverride column="column_b" jdbcType="VARCHAR"/> </table> <!-- geelynote mybatis外掛的搭建 --> </context> </generatorConfiguration>
  • datasource.properties 檔案配置
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mmall_learning?characterEncoding=utf-8
db.username=root
db.password=123456