日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

MyBatis-19MyBatis代码生成器-XML配置详解

發(fā)布時(shí)間:2025/3/21 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis-19MyBatis代码生成器-XML配置详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  • 概述
  • XML文件頭
  • 根節(jié)點(diǎn)generatorConfiguration及三個(gè)子元素(properties、classPathEntry、context)
    • properties子元素 (0…1)
    • classPathEntry子元素 (0…N)
    • context子元素 (1…N)
  • 深入了解context元素
    • context 可選屬性
    • context 子元素
      • property (0..N)
      • plugin (0..N)
      • commentGenerator (0 or 1)
      • jdbcConnection (1 Required)
      • javaTypeResolver (0 or 1)
      • javaModelGenerator (1 Required)
      • sqlMapGenerator (0 or 1)
      • javaClientGenerator (0 or 1)
      • table (1..N)
  • 使用心得
  • demo

概述

MyBatis-17MyBatis代碼生成器(逆向工程)MBG使用

MyBatis-18MyBatis代碼生成器-Example講解

通過前兩篇的實(shí)踐后,我們來梳理下理論知識(shí)。

MBG擁有豐富的配置,以XML形式的標(biāo)簽和屬性來實(shí)現(xiàn)。


XML文件頭

首先按照MBG的要求添加XML的文件頭

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

這個(gè)文件頭中的mybatis-generator-config_1_0.dtd用于定義該配置文件中所有標(biāo)簽和屬性的用法及限制。


根節(jié)點(diǎn)generatorConfiguration及三個(gè)子元素(properties、classPathEntry、context)

<generatorConfiguration><!-- 配置內(nèi)容 --> </generatorConfiguration>

文件頭以及根節(jié)點(diǎn)是MBG必備的基本信息,中間是MBG的自定義配置部分。

根元素為<generatorConfiguration>,包含子元素(按照嚴(yán)格的順序):<properties>(0或一個(gè)),<classPathEntry>(0或多個(gè)),<context>(1或多個(gè));


properties子元素 (0…1)

<properties>,指定外部的屬性文件,然后在配置中就可以通過${property}來引用屬性文件中的屬性值了. 一般配置數(shù)據(jù)庫連接較為常見。

屬性可以通過resource或者url來指定,只能使用其中一個(gè)屬性來執(zhí)行,同時(shí)使用會(huì)報(bào)錯(cuò)。

  • resource:指定classpath下的屬性文件, 類似com/artisan/db.properties這樣的屬性值

  • url:指定文件系統(tǒng)上的特定位置,一般通過file協(xié)議來加載指定路徑位置的屬性文件,如:<properties url="file:///xxx/jdbc.properties"/>


classPathEntry子元素 (0…N)

classPathEntry元素,可以配置多個(gè),也可以不配。 一般來指定驅(qū)動(dòng)路徑.屬性location,來指定jdbc驅(qū)動(dòng)包的位置.如果將jar包放入了classpath中,就不用設(shè)置這個(gè)屬性了.

這個(gè)標(biāo)簽還可以用在javaModelgenerator,通過使用這種方式指定rootClass屬性配置類所在的jar包


context子元素 (1…N)

context元素:用于指定一組對(duì)象的環(huán)境.子元素用于指定連接到的數(shù)據(jù)庫,要生成的對(duì)象的類型和要處理的數(shù)據(jù)庫中的表.該元素只有一個(gè)必選屬性id,來進(jìn)行唯一標(biāo)識(shí).


深入了解context元素

context 可選屬性

  • id 唯一標(biāo)識(shí)

  • defaultModelType:設(shè)置MBG如何生成實(shí)體類.
  • conditional 默認(rèn)值,不會(huì)生成單獨(dú)的Blob實(shí)體類,但是如果有聯(lián)合主鍵,會(huì)生成一個(gè)主鍵實(shí)體類. 和hierarchical類似,如果一個(gè)表的主鍵只有一個(gè)字段,那么不回位該字段生成單獨(dú)的實(shí)體類,而是會(huì)將該字段合并到基本實(shí)體類中。

    2. flat,該模型只為每張表生成一個(gè)實(shí)體類,這個(gè)實(shí)體類包含表中所有的字段,這種模型最簡(jiǎn)單,推薦使用

  • hierarchical,如果有聯(lián)合主鍵,會(huì)生成單獨(dú)的主鍵實(shí)體類,如果有Blob字段,會(huì)生成單獨(dú)的Blob實(shí)體類,然后為所有的其他字段另外生成一個(gè)單獨(dú)的實(shí)體類,MBG會(huì)在所有生成的實(shí)體類之間維護(hù)一個(gè)繼承關(guān)系。


    • targetRuntime :這個(gè)屬性用于指定生成代碼的運(yùn)行時(shí)目標(biāo)
  • MyBatis3 : 輸出對(duì)象兼容MyBatis 3.0或更高版本,兼容JSE 5.0或更高版本的對(duì)象,包含泛型和注解.會(huì)生成 by example這類動(dòng)態(tài)查詢方法.
  • MyBatis3Simple: 與上面的MyBatis3類似,但是不會(huì)生成by example`一類方法,只有少量的動(dòng)態(tài)SQL

  • context 子元素

    這些子標(biāo)簽有嚴(yán)格的配置順序

    1. property(0個(gè)或者多個(gè))

    2. plugin(0個(gè)或者多個(gè))

    3. commentGenerator(0個(gè)或者1個(gè))

    4. jdbcConnection(1個(gè))

    5. javaTypeResolver(0個(gè)或者1個(gè))

    6. javaModelGenerator(1個(gè))

    7. sqlMapGenerator(0個(gè)或者1個(gè))

    8. javaClientGenerator(0個(gè)或者1個(gè))

    9. table(1個(gè)或者多個(gè))

    property (0..N)

    <property> (0..N) ,property以name,和value的形式來設(shè)置,支持的屬性有

    • autoDelimitKeywords :自動(dòng)識(shí)別數(shù)據(jù)庫關(guān)鍵字,默認(rèn)為false,設(shè)置為true后,如果遇到數(shù)據(jù)庫關(guān)鍵字,用<columnOverride>替換.
    • beginnginDelimiter , endingDelimiter : 用作分隔符的符號(hào),oracle中是”,而mysql中是`
    • javaFileEncoding : 設(shè)置Java文件的編碼集,如果沒有指定,則會(huì)使用系統(tǒng)默認(rèn)編碼.
    • javaFormatter :使用該屬性來指定生成的java文件的用戶指定的formater的完整的類名稱,用于格式化java代碼,這個(gè)類必須繼承org.mybatis.generator.api.JavaFormatter,而且提供一個(gè)默認(rèn)不含參數(shù)的構(gòu)造方法.每個(gè)context持有一個(gè)單獨(dú)的javaFormatter實(shí)例,默認(rèn)的是org.mybatis.generator.api.dom.DefaultJavaFormatter
    • xmlFormatter : 格式化xml文件,與上述javaFormatter類似.

    plugin (0..N)

    用來定義一個(gè)插件,插件用于修改MBG生成的代碼.類繼承于 org.mybatis.generator.api.Plugin .

    下面介紹緩存插件,全限定名為org.mybatis.generator.plugins.CachePlugin

    這個(gè)插件可以在生成的SQL XML映射文件中增加一個(gè)cache標(biāo)簽,只有當(dāng)targetRuntime為MyBatis3時(shí),該插件才有效。

    該插件的可選屬性

    • cache_eviction
    • cache_flushInterval
    • cache_readOnly
    • cache_size
    • cache_type

    配置方法

    <plugin type="org.mybatis.generator.plugins.CachePlugin"><property name="cache_eviction" value="LRU"><property name="cache_size" value="1024"> </plugin>

    增加這個(gè)屬性后,生成的Mapper.xml文件會(huì)增加如下的緩存配置

    <cache eviction="LRU" size="1024"> </cache>

    commentGenerator (0 or 1)

    用于定義注釋生成器的屬性.注釋生成器用來給由MBG生成的多種元素,Java自動(dòng),java方法,XML元素等等 生成注釋. 默認(rèn)的注釋生成器將JavaDoc注釋添加到所有生成的Java元素上,也會(huì)添加到每個(gè)生成的XML元素上.注釋的目的是告訴用戶這個(gè)元素是生成的,并且有可能重新生成,也就是說不應(yīng)該修改這些地方.

    可選屬性 type,用來指定注釋生成器類型.自定義的類要繼承于 org.mybatis.generator.api.CommentGenerator.

    使用子元素來設(shè)置屬性:

    • suppressAllComments :用來指定MBG所生成的代碼是否包含任何注釋.默認(rèn)為false,即都會(huì)生成注釋.為true是,所有代碼都不會(huì)生成注釋,且代碼不會(huì)并合并.
    • suppressDate : 用來指定生成的注釋中是否包含生成的日期.默認(rèn)為false. 設(shè)置為true,不會(huì)添加時(shí)間戳.
    • addRemarkComments: 注釋是否添加數(shù)據(jù)庫表的備注信息,默認(rèn)false

    jdbcConnection (1 Required)

    設(shè)置數(shù)據(jù)庫連接的屬性.每個(gè)必須含有一個(gè)元素.

    必選屬性:
    - driverClass : 訪問數(shù)據(jù)庫的JDBC驅(qū)動(dòng)程序的完全名稱.
    - connectionURL : 用于訪問數(shù)據(jù)的JDBC連接URL.

    可選屬性:

    • userId : 訪問數(shù)據(jù)庫的用戶ID
    • password : 訪問數(shù)據(jù)庫的密碼

    可以設(shè)置子元素<property>指定的屬性都會(huì)被添加到JDBC驅(qū)動(dòng)程序的屬性中.


    javaTypeResolver (0 or 1)

    java類型處理器,處理數(shù)據(jù)庫中類型到Java中的類型.使用屬性type來設(shè)置,默認(rèn)使用JavaTypeResolverDefaultImpl來處理類型.

    子元素property支持一個(gè)屬性:
    - forceBigDecimals : 是否強(qiáng)制將DECIMAL和NUMERIC的類型轉(zhuǎn)換為BigDecimal類型,默認(rèn)是false.

    默認(rèn)情況下的轉(zhuǎn)換規(guī)則為:
    1. 如果精度>0或者長度>18,使用BigDecimal.
    2. 如果精度=0且10<=長度<=18,則使用Long
    3. 如果精度=0且5<=長度<=9,則使用Integer
    4. 如果精度=0且長度<5 ,則使用Short.


    javaModelGenerator (1 Required)

    該元素用于控制生成的實(shí)體類.有兩個(gè)必選屬性:

    • targetPackage : 生成實(shí)體類所在的包名.會(huì)為目標(biāo)包名生成pacakge.
    • targetProject : 指定目標(biāo)項(xiàng)目,運(yùn)行于Eclipse或者IDEA等IDE時(shí),這個(gè)屬性是來指定項(xiàng)目的source root,一般就是 src/main/java這樣的路徑.不會(huì)為這個(gè)路徑創(chuàng)建文件夾.

    通過子元素來設(shè)置屬性:

    • constructorBased : 是否為每個(gè)類生成一個(gè)使用所有字段的構(gòu)造函數(shù).只對(duì)MyBatis3有效,默認(rèn)為false. 如果屬性immutable被設(shè)置了,則這個(gè)屬性會(huì)被忽略.可以在<table>中對(duì)具體的一個(gè)表進(jìn)行設(shè)置.
    • enableSubPackages : 是否根據(jù)表的 catalog 和 schema 來生成一個(gè)子包,默認(rèn)是false
    • immutable : 這個(gè)屬性用于選擇這些類是否是可變的,如果設(shè)置true,則這些類是不可變的,所有沒有setter方法,且會(huì)忽略constructorBased屬性,來默認(rèn)提供一個(gè)含有所有參數(shù)的構(gòu)造函數(shù).默認(rèn)是false.
    • rootClass : 這個(gè)屬性用來指定所有生成的Java Model的基類,需要使用 fully qualified class name 如 com.xxx.xxx.RootClass. 如果生成對(duì)象生成的類型或者getter和setter方法在RootClass中存在,則不會(huì)自動(dòng)生成和覆蓋rootClass中的內(nèi)容.
    • trimStrings : 這個(gè)屬性用來設(shè)置對(duì)從數(shù)據(jù)庫取回的字符串進(jìn)行trim操作,默認(rèn)為false.

    sqlMapGenerator (0 or 1)

    定義SQL映射生成器(Mapper.xml)的屬性,SQL映射生成器會(huì)為每個(gè)表生成Mybatis使用的XML文件.如果沒有指定這個(gè)元素,不會(huì)生成SQL映射的XML文件.如果使用MyBatis3,且設(shè)置了javaClientGenerator需要XML時(shí),這個(gè)屬性才是必選子元素.


    可選屬性:

    • targetPackage : 包所在位置
    • targetProject : 指定目標(biāo)項(xiàng)目

    可以通過子元素 來設(shè)置一個(gè)屬性 :enableSubPackages:是否通過目錄和schema來生成子包.


    javaClientGenerator (0 or 1)

    用于定義Java客戶端代碼生成器的屬性.會(huì)生成Java的接口和類,可以簡(jiǎn)單的使用生成的Java Model和XML映射文件.在MyBatis中,會(huì)生成Mapper接口形式的代碼.


    必選屬性:

    • type : 用戶選擇一個(gè)默認(rèn)的生成器,或者使用用戶自定義的DAO生成器.自定義需要繼承與 org.mybatis.generator.codegen.AbstractJavaClientGenerator類.

      如果當(dāng)前targetRuntime是 MyBatis3,有以下三個(gè)選項(xiàng):

  • ANNOTATEDMAPPER : 生成對(duì)象是 MyBatis3.x映射器基礎(chǔ)結(jié)構(gòu)的Java接口,這些接口會(huì)基于注解和SqlProviders,不會(huì)有XML文件生成.就是純接口使用注解.會(huì)有Provider生成.
  • MIXEDMAPPER :注解與XML混合,注解用在簡(jiǎn)單注解可以實(shí)現(xiàn)的地方,客戶端不會(huì)生成SqlProvider,復(fù)雜的動(dòng)態(tài)SQL都會(huì)生成在XML中.
  • XMLMAPPER : 生成接口依賴XML文件.
  • 如果targetRuntime是MyBatis3Simple沒有MIXEDMAPPER選項(xiàng).
    • targetPackage和targetProject

    可選屬性 :

    • implementationPackage : 如果指定了該屬性,實(shí)現(xiàn)類就會(huì)生成在這個(gè)包中.

    通過子元素 來設(shè)置屬性:

    • enableSubPackages : 是否根據(jù) catolog和scheme來生成不同的包.
    • exampleMethodVisibility :設(shè)置byExample方法是否可見,默認(rèn)是public,可見,且在接口中聲明方法.可以設(shè)置的屬性有: public,private,protected,default,但是在MyBatis3中,忽略該屬性.
    • methodNameCalculator : 屬性用于為DAO方法提供不同的名稱.被Mybatis3忽略.
    • rootInterface : 指定是否所有生成的接口都繼承與一個(gè)父接口.使用 fully qualified class name.
    • useLegacyBuilder :默認(rèn)是false.設(shè)置為true,會(huì)使用SqlBuilder為MyBatis生成動(dòng)態(tài)SQL,在MyBatis3.2和以后被棄用.如果為false,則使用新的SQL生成器來生成客戶端代碼.

    table (1..N)

    從數(shù)據(jù)庫中選擇一個(gè)表,來生成對(duì)象.


    必選屬性:

    • tableName : 數(shù)據(jù)庫表的名稱,不包含 catalog和schema,可以指定SQL通配符,如”%”來匹配所有的表.名稱的匹配的邏輯:如果名稱中有空格,則以指定大小寫來查找表,如果數(shù)據(jù)庫標(biāo)識(shí)為大寫,則用大寫,如果數(shù)據(jù)庫標(biāo)識(shí)為小寫則用小寫,否則,自行定義.在創(chuàng)建數(shù)據(jù)庫時(shí),如果使用”“來指定大小寫了,即使數(shù)據(jù)庫標(biāo)識(shí)符是大寫,也需要設(shè)置
      delimitIdentifiers = "true"來保留大小寫格式.

    可選屬性:

    • schema : 可以指定通配符
    • catalog : 可以指定通配符
    • alias : 如果指定,則設(shè)置的別名會(huì)用在select查詢上.
    • domainObjectName : 生成的對(duì)象的基本名稱,如果沒有指定,則會(huì)以表名來命名.由于帶domain,所以可以生成到指定包中,如abc.Model,對(duì)象名是Model,添加到包abc中. enableInsert : 是否生成Insert語句,默認(rèn)為true.
    • enableSelectByPrimaryKey :是否生成根據(jù)主鍵查詢語句,默認(rèn)為true.如果不存在主鍵,這不會(huì)生成根據(jù)主鍵查詢的語句.
    • enableSelectByExample : 是否通過 Example進(jìn)行動(dòng)態(tài)查詢.默認(rèn)為true.
    • enableUpdateByPrimaryKey : 是否通過主鍵根據(jù).默認(rèn)為true
    • enableDeleteByPrimaryKey : 是否通過主鍵刪除語句.默認(rèn)為true.
    • enableUpdateByExample : 是否生成通過Example更新語句.默認(rèn)為true.
    • enableDeleteByExample : 是否生成通過Example刪除語句,默認(rèn)為true.
    • enableCountByExample : 是否生成根據(jù)Example查詢總數(shù)的語句,默認(rèn)為true.
    • selectByPrimaryKeyQueryId : 這個(gè)值會(huì)以 <value> as QUERYID的形式被添加到主鍵查詢語句的select列中.這樣,可以對(duì)生成的每一個(gè)查詢指定一個(gè)唯一的ID.
    • selectByExampleQueryId : 對(duì)每一次查詢?cè)O(shè)置一個(gè)唯一id.
    • modelType : 可以用來重寫默認(rèn)的模型類型,即conditional,flat,和hierarchical三個(gè)屬性.
    • escapeWildcards : 這個(gè)屬性表示當(dāng)查詢列時(shí),是否對(duì)schema和表名中的SQL通配符(如_和%)進(jìn)行轉(zhuǎn)義.默認(rèn)是false.
    • delimitIdentifiers : 這個(gè)屬性當(dāng)查詢表并且在生成的SQL中分割標(biāo)識(shí)符時(shí),是否使用指定的確切值.默認(rèn)為false.如果catalog,schema或者tableName包含空白時(shí),應(yīng)該為true.
    • delimitAllColumns : 指示是否給生成SQL中所有的列名添加分割符.默認(rèn)為false.

    子元素有 :

    • <property> (0 .. N) : 通過property可以設(shè)置以下屬性:

    construtorBased : 是否產(chǎn)生一個(gè)含有所有字段的構(gòu)造函數(shù).默認(rèn)為false
    ignoreQualifiersAtRuntime: 生成的SQL的表名將不會(huì)包含schema和catalog的前綴.默認(rèn)為false.
    immutable :與<javaModelGenerator>中含義相同. modelOnly : 是否值生成模型類,而不生成CRUD方法.默認(rèn)是false.
    rootClass : 與<javaModelGenerator>中含義相同
    rootInterface :與<javaModelGenerator>中含義相同.
    runtimeCatalog :指定生成SQL語句中的catalog,生成代碼的catalog會(huì)與運(yùn)行時(shí)的catalog不同.
    runtimeSchema : 運(yùn)行時(shí)schema
    runtimeTableName : 運(yùn)行時(shí)表名.
    selectAllOrderByClause :在MyBatis3SseColimple中,將這個(gè)屬性以 oder by的形式添加到selectAll方法中.
    useActualColumnNames : 默認(rèn)為false.設(shè)置為true時(shí),將從數(shù)據(jù)庫元數(shù)據(jù)獲取的列名作為實(shí)體類的屬性名.false時(shí),會(huì)將名稱轉(zhuǎn)換為駝峰形式.如果被<columnOverride>元素指定,則會(huì)忽略這個(gè)屬性. 如START_DATE屬性會(huì)變成 startDate屬性.
    useColumnIndexes :默認(rèn)為false.且Mybatis3中不支持這個(gè)屬性.如果為true,會(huì)在生成resultMaps時(shí)使用索引.
    useCompoundPropertyNames : 默認(rèn)為false. 如果為true,在生成屬性名時(shí),會(huì)將列名和備注連接起來.


    • <generatedKey> (0 or 1) :
      用于指定自動(dòng)生成主鍵的屬性.如果指定該元素,MBG會(huì)在生成insert的SQL映射文件中插入一個(gè)合適的<selectKey>元素.簡(jiǎn)單來說,就是可以用來做自增主鍵的設(shè)置.

    必選屬性:

    • column : 生成列 的列名.
    • sqlStatement : 返回新值的SQL語句.一些特殊值為 :MySql,轉(zhuǎn)化為`SELECT LAST_INSERT_ID() . JDBC在MyBatis3中,生成正確的代碼,且脫離數(shù)據(jù)庫的限制.

    可選屬性:

    • identity : 默認(rèn)為false.如果為true,被標(biāo)記為identity列,且<selectKey>元素后被插入在insert后面.如果為false,則會(huì)被插入在insert之前.
    • type : 為selectKey元素指定類型, pre或post.指定類型后,selectKey永遠(yuǎn)在insert語句之前.

    理解這個(gè)序列的意思,和插入前后的意思.序列表示表是一個(gè)序列,插入之前要先查詢表,就需要知道當(dāng)前指向的位置即主鍵.而自增主鍵要在插入之后,才能知道自己的大小.


    • <columnRenamingRule> (0 or 1)

      列的重命名規(guī)則.MBG使用正則表達(dá)式來進(jìn)行重命名規(guī)則的實(shí)現(xiàn),如果有<columnOverride>,則忽略<columnRenamingRule>屬性.先使用這個(gè)重命名規(guī)則后,獲得的結(jié)果再去使用useActualColumnNames規(guī)則來判斷是非需要再次更新屬性名.


    必選屬性:

    • searchString : 定義將被替換的子字符串的正則表達(dá)式.

    可選屬性:

    • replaceString : 替換匹配的字符串.如果沒有設(shè)置,則用空字符串替換.

    • <columnOverride> (0 … N)

    將默認(rèn)得到的列進(jìn)行修改,來設(shè)置指定的類型,名稱等.

    必選屬性:

    • column : 列名

    可選屬性:

    • property : 要使用的Java名稱.
    • javaType : 完全指定的Java類型.這里有必要來處理奇怪的數(shù)據(jù)庫類型,如mysql中的unsigned
      bigint需要被映射為java.lang.Object.
    • jdbcType : 該列的JDBC類型(INTEGER,DECIMAL等等)
    • typeHandler : 用戶定義的需要用來處理該列的類型處理器.
    • delimitedColumnName : 是否需要分割列名,指的是列名可能是帶空格或者保留字,所以是否需要添加分隔符.默認(rèn)為false.

    • <ignoreColumn> (0 … N)

    忽略的列.

    可選屬性:

    • delimitedColunmnName : 當(dāng)匹配對(duì)從數(shù)據(jù)庫返回列時(shí),是否區(qū)分大小寫.默認(rèn)為false.

    使用心得

    • 可以考慮實(shí)體類類型defaultModelType為 flat,即只有一個(gè)對(duì)象,這樣管理起來更加方便.
    • 注釋的時(shí)間戳suppressDate一般都會(huì)關(guān)閉,因?yàn)槊看沃匦律啥紩?huì)修改時(shí)間戳,SVN都要重新提交,不利于多人開發(fā).
    • 將jdbc驅(qū)動(dòng)放在項(xiàng)目的classPath下,而不是使用<classPathEntry>來引入jar包.
    • 對(duì)于字符串類型,一般都設(shè)置trimStrings來去除空格.
    • 在<table>中配置<generatedKey>,來實(shí)現(xiàn)自增主鍵.
    • 在Mysql中,支持無符號(hào)數(shù),但是java中的數(shù)據(jù)類型都是有符號(hào)的,所以要用<columnOverride>來解決這個(gè)問題,先將類型轉(zhuǎn)換成java.lang.Object,然后在使用時(shí),將返回值強(qiáng)制轉(zhuǎn)換為適當(dāng)?shù)念愋?

    demo

    在JDBC配置文件db.properties中,對(duì)項(xiàng)目文件夾布局進(jìn)行指定:

    # 包路徑 model.package=com.artisan.mybatis.pojo dao.package=com.artisan.mybatis.dao xml.mapper.package=com.artisan.mybatis.mapping target.project=src/main/java

    編寫配置文件generatorConfig.xml:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!-- 引用外部配置文件 --><properties resource="db.properties" /><context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat"><!--關(guān)閉時(shí)間注釋 --><commentGenerator><property name="suppressDate" value="true"/></commentGenerator><!--數(shù)據(jù)庫連接信息 --><jdbcConnection driverClass="${jdbc.driver}"connectionURL="${jdbc.url}"userId="${jdbc.username}"password="${jdbc.password}"></jdbcConnection><!--生成的model 包路徑 --><javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}"><property name="enableSubPackages" value="ture"/><property name="trimStrings" value="true"/></javaModelGenerator><!--生成xml mapper文件 路徑 --><sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}"><property name="enableSubPackages" value="ture"/></sqlMapGenerator><!-- 生成的Dao接口 的包路徑 --><javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}"><property name="enableSubPackages" value="ture"/></javaClientGenerator><!--對(duì)應(yīng)數(shù)據(jù)庫表名 --><table tableName="%"><generatedKey column="id" sqlStatement="Mysql"/></table></context> </generatorConfiguration>

    總結(jié)

    以上是生活随笔為你收集整理的MyBatis-19MyBatis代码生成器-XML配置详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。