當前位置:首頁 » 操作系統 » generator源碼

generator源碼

發布時間: 2022-05-27 09:27:53

『壹』 如何修改mybatis generator tinyint byte

首先說說上一篇最後提到的關於自定義注釋的問題,想實現這個功能就需要修改org.mybatis.generator.internal.DefaultCommentGenerator這個類。我將裡面一些主要的方法講下。
addjavaFileComment(CompilationUnit compilationUnit)
給Java文件加註釋,這個注釋是在文件的頂部,也就是package上面。

addComment(XmlElement xmlElement)
給生成的XML文件加註釋。大象將這個方法清空了,不生成注釋。

addClassComment(InnerClass innerClass,IntrospectedTable introspectedTable)
Java類的類注釋。

請注意紅線的getRemarks()方法,這個remarks屬性在原來的FullyQualifiedTable裡面是沒有的,這是大象自己加上去的,就是為了保存表的注釋信息。那是在哪裡加進去的呢?請看org.mybatis.generator.internal.db.DatabaseIntrospector這個類,大概瀏覽下就會發現,資料庫表以及列的信息讀取,類型設置都是由它來完成的,定位到608行,正好這里是個空行,插入幾行代碼。如下:

這樣我們就取到了表的注釋信息,看到這里應該就會明白了吧?
另外我需要說明的是,想通過databaseMetaData.getTables()來獲得表注釋的童鞋,這個做法是沒用的,大象已經試過了,這個結果集裡面的rs.getString("REMARKS")得到的是一個空字元串,什麼都木有。而且大象還想吐槽下,網上一大堆說返回的這個結果集是10列,呵呵,是的么?我debug了好久發現它還是只有5列,不知道這10列是從哪來的,請列印出10列的童鞋告之是怎麼做的,我用的mysql驅動是5.1.29

addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn)
Java屬性注釋。注釋為空就不給屬性添加。

addGetterComment(Method method,IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn)
給getter方法加註釋。這里添加註釋的方法和Field一樣,大象把這個方法以及addSetterComment方法都清空了,因為我比較習慣把注釋加到屬性上面,如果你習慣在getter方法上面加註釋可以自行改一下。
上面這些修改做完後,記得要在org.mybatis.generator.codegen.mybatis3.model.BaseRecordGenerator的61行增加下面這行代碼:
commentGenerator.addClassComment(topLevelClass, introspectedTable);
因為mybatis-generator源碼中本來就是不加類注釋的。
大家都在不同的公司,要求肯定都不一樣,大象沒法滿足所有人,只對該類做了一定程度的修改,姑且把它當做一個示例模板吧,主要是弄明白怎麼改就成了。

mybatis-generator在1.3.2版里對生成xml的namespace作了修改,不再用表名當為namespace的值,而是用包結構+類名+Mapper後綴的形式設置,大象不喜歡這么復雜做法,所以這里需要改一改,只保留類名+Mapper的命名形式。去掉org.mybatis.generator.api.IntrospectedTable類的907行與908行代碼。

接下來再來說說對大對象類型的處理,mybatis-generator默認會把所有jdbcType為:BINARY、BLOB、CLOB、LONGVARBINARY、LONGVARCHAR、VARBINARY這些類型都作為大對象,反應出來的效果就是生成的pojo類會多一個類名+WithBLOBs.java的文件(含有的大對象個數大於1時),而在XML裡面也會增加一個id為ResultMapWithBLOBs的resultMap,它繼承BaseResultMap,大象一向喜歡簡單的風格,這看得太不爽了。如果你覺得無所謂,不需要修改,請跳過這段往下看。
表中的text或blob等類型,通過databaseMetaData.getColumns()取出來後,它的rs.getInt("DATA_TYPE")值是與java.sql.Types對應的。
text類型的值:Types.LONGVARCHAR
blob類型是值:Types.LONGVARBINARY
它用org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl解析java類型與jdbc類型,然後設置到org.mybatis.generator.api.IntrospectedColumn的jdbcTypeName屬性里,最關鍵的地方到了,IntrospectedColumn類第156行有個isBLOBColumn()方法,它就是用來判斷是否生成xxxWithBLOBs.java和ResultMapWithBLOBs的條件。當然mybatis-generator不會這么直接用,它在裡面定義了一個Rules介面,由它來統一進行調用。所以我們只需要把isBLOBColumn()裡面的代碼都去掉,直接返回false就可以了,再結合配置文件中的columnOverride屬性就能達到目的。

jdbcType指定的值就是生成xml後result裡面對應的類型,javaType與生成的pojo裡面屬性類型一致,這里其實可以不定義javaType,但是當資料庫的表欄位有的定義為tinyint時,如果不給它指定類型,那麼默認生成的java類型就是java.lang.Byte,假如你想轉換類型,而且保證不會超出欄位類型的大小限制,那麼你可以將它的javaType設為java.lang.Integer
經過這么一番修改之後,輸出結果已經比較理想了,但是xml文件看上去還是有點問題,元素與元素之間沒空行,看起來好別扭。恩,這里要給它加上空行,所以請找到org.mybatis.generator.api.dom.xml.XmlElement類的getFormattedContent方法,這個方法有個參數:indentLevel,通過名字我們可以很直觀的理解它的作用就是來控制縮進等級,它的初始值為0,這表示不縮進,當變成1時就是縮進一級,也即縮進四個空格,後面以此類推,我們應該還注意到,方法內部用到了遞歸,所以它是從最底元素開始,再一步步返回,所以我們就應該在indentLevel為1的元素後面加上換行。

在生成xml的文件裡面,我們看到有一個update元素,id為updateByPrimaryKey,這個基本上用不到,但是你還不能在table里加上enableUpdateByPrimaryKey="false",如果你這么做,雖然updateByPrimaryKey沒有了,但updateByPrimaryKeySelective也會消失。所以這時請看看org.mybatis.generator.codegen.mybatis3.xmlmapper.XMLMapperGenerator這個類,getSqlMapElement()裡面,有大量的addXXX方法,這些方法裡面每個都用到了Rules規則來處理是否執行,比如我們在table裡面加了enableDeleteByExample="false",它對應的是addDeleteByExampleElement(),而它又調用了introspectedTable.getRules().generateDeleteByExample()方法,再進入到generateDeleteByExample()裡面,我們可以看到紅線部分,上一篇大象講過,在載入配置文件的時候,TableConfiguration會將table中的這些屬性設置到對應的屬性里,所以說其實最後還是回到了判斷enableDeleteByExample的布爾值上面。

上面啰嗦了一大堆,現在再來解決之前提到的問題,如何去掉id為updateByPrimaryKey的update元素,注釋掉()或直接去掉這行代碼,跟蹤代碼你會發現,它和()的rules驗證裡面都用到了enableUpdateByPrimaryKey的值。或者你不想採取我說的這個辦法,而是改BaseRules的(),讓它直接返回false
最後大象再嘮叨一句,這些addXXX方法的順序決定了生成xml文件中的元素順序,所以有代碼潔癖的人可以作下調整。
上一篇加這一篇都是講怎麼少量的改動源碼以實現自定義文件輸出,寫的比較凌亂,不是很系統,完全是從實用的角度出發,關鍵還是大象水平有限,有什麼錯誤還請大家幫我指出來,謝謝!
改了這么多,總要看下效果吧,下一篇大象將寫個測試看看生成的結果,然後用maven assembly將它打包生成一個zip,它將包含:

『貳』 js generator 是非同步還是同步

是非同步

剛剛看了V8引擎的源碼,generator都是每次創建一個generator scope,然後將序列執行的方法指針傳入,
源碼在src/runtime/runtime-generator.cc

『叄』 codegenerator生成代碼後沒有頁面,怎麼弄

codegenerator生成代碼後沒有頁面,怎麼弄

  1. 最簡單的方法就是用記事本新建個文件,寫入HTML代碼,然後把文件後綴名改成.html,在雙擊打開就是頁面了。

  2. 可以在任意網頁上右鍵,查看源代碼或是源文件之類的,就可以看到頁面的代碼。

  3. 那是HTML代碼,可以由瀏覽器翻譯成頁面。

可以採用最原始的方法就是就是自己去模擬一個請求,將js中ajax的鏈接地址拼接出來,再次進行請求,這個時候需要注意post方式還是get方法。

『肆』 如何在idea中使用Mybatis-generator插件快速生成代碼

IntelliJ idea 開發工具的相關資料很少,加大了大家入手的難度,今天就以mybatis的插件安裝做下示例,可能對於已經會用的人不值一提但是對於我們這些天資一般剛開始使用,我想還是會有些幫助。
安裝步驟:
1.下載插件
mybatis 插件
插件下載完畢,存放指定位置,文件名默認應該是:mybatis-plus.jar
2.打開Intellij idea工具,打開菜單 File --> settings 選擇 Plugs,點擊Install plug from disk,選擇剛剛下載的插件jar文件,確認後,會直接顯示mybatis插件和其信息,表示安裝成功。
3.插件安裝後,打開settings,會有Mybatis一項!

『伍』 <meta name="generator" content="DEDECMS 5.7" data-variable="/muban/M1156008/這串代碼怎麼改

1.在網站前端首頁,可以通過 查看網頁源代碼 (快捷鍵 Ctrl+U) 打開,查看<meta name="generator" content="DEDECMS 5.7" data-variable="/muban/M1156008/這串代碼的位置,確定位置後,操作第二步。
2.登錄網站管理後台,找到 系統設置→模板管理,找到index.htm(文件名) [ 網站前端首頁模板 ],找到第一步網頁源代碼<meta name="generator" content="DEDECMS 5.7" data-variable="/muban/M1156008/這串代碼 對應的位置,可進行刪除或修改「 」裡面的參數。

『陸』 通過generator寫的mybatis怎麼獲取新增是的id

在MBG中,最主要也最重要的就是XML配置文件,因此本篇文章主要的內容就是XML配置。

這里按照配置的順序對配置逐個講解,更細的內容可以配合中文文檔參照。

1. 配置文件頭
<?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">
使用最新版的MBG需要使用上面的xml頭,配置文件必須包含上面的DOCTYPE。

2. 根節點<generatorConfiguration>
generatorConfiguration節點沒有任何屬性,直接寫節點即可,如下:

<generatorConfiguration>
<!-- 具體配置內容 -->
</generatorConfiguration>
3. <generatorConfiguration>子元素
從這段開始,就是配置的主要內容,這些配置都是generatorConfiguration元素的子元素。

包含以下子元素(有嚴格的順序):

<properties> (0個或1個)
<classPathEntry> (0個或多個)
<context> (1個或多個)
3.1 <properties> 元素
這個元素用來指定外部的屬性元素,不是必須的元素。

元素用於指定一個需要在配置中解析使用的外部屬性文件,引入屬性文件後,可以在配置中使用 ${property}這種形式的引用,通過這種方式引用屬性文件中的屬性值。 對於後面需要配置的**jdbc信息**和targetProject屬性會很有用。

這個屬性可以通過resource或者url來指定屬性文件的位置,這兩個屬性只能使用其中一個來指定,同時出現會報錯。

resource:指定**classpath**下的屬性文件,使用類似com/myproject/generatorConfig.properties這樣的屬性值。
url:可以指定文件系統上的特定位置,例如file:///C:/myfolder/generatorConfig.properties
3.2 <classPathEntry> 元素
這個元素可以0或多個,不受限制。

這個元素的作用是將MBG運行時需要用到的jar包(或zip格式)添加到**classpath**下。

最常見的用法是,當**classpath**下面**沒有**JDBC驅動的時候,我們通常通過這個屬性指定驅動的路徑,例如:

<classPathEntry location="E:\mysql\mysql-connector-java-5.1.29.jar"/>
如果需要用到其他的jar包,也可以這么配置,例如如果你開發了一個MBG的插件,你就可以通過這種方式加入到**classpath**

這里注意上面重點強調的 沒有,一般在項目中使用的時候,**classpath**下面都有JDBC驅動,因此從項目中啟動的時候不需要配置該項。

建議:由於該參數使用了絕對路徑,因此不利用在不同電腦上通用,因此建議最好把需要的jar包放到項目的**classpath**下,避免每個人都得單獨配置路徑。

3.3 <context> 元素
在MBG的配置中,至少需要有一個<context>元素。

<context>元素用於指定生成一組對象的環境。例如指定要連接的資料庫,要生成對象的類型和要處理的資料庫中的表。運行MBG的時候還可以指定要運行的<context>。

該元素只有一個**必選屬性**id,用來唯一確定一個<context>元素,該id屬性可以在運行MBG的使用。

此外還有幾個**可選屬性**:

defaultModelType:**這個屬性很重要**,這個屬性定義了MBG如何生成**實體類**。
這個屬性有以下可選值:

conditional:*這是默認值*,這個模型和下面的hierarchical類似,除了如果那個單獨的類將只包含一個欄位,將不會生成一個單獨的類。 因此,如果一個表的主鍵只有一個欄位,那麼不會為該欄位生成單獨的實體類,會將該欄位合並到基本實體類中。
flat:該模型為每一張表只生成一個實體類。這個實體類包含表中的所有欄位。**這種模型最簡單,推薦使用。**
hierarchical:如果表有主鍵,那麼該模型會產生一個單獨的主鍵實體類,如果表還有BLOB欄位, 則會為表生成一個包含所有BLOB欄位的單獨的實體類,然後為所有其他的欄位生成一個單獨的實體類。 MBG會在所有生成的實體類之間維護一個繼承關系。
targetRuntime:此屬性用於指定生成的代碼的運行時環境。該屬性支持以下可選值:

MyBatis3:*這是默認值*
MyBatis3Simple
Ibatis2Java2
Ibatis2Java5 一般情況下使用默認值即可,有關這些值的具體作用以及區別請查看中文文檔的詳細內容。
introspectedColumnImpl:該參數可以指定擴展org.mybatis.generator.api.IntrospectedColumn該類的實現類。該屬性的作用可以查看擴展MyBatis Generator。
一般情況下,我們使用如下的配置即可:

<context id="Mysql" defaultModelType="flat">
如果你希望不生成和Example查詢有關的內容,那麼可以按照如下進行配置:

<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
使用MyBatis3Simple可以避免在後面的<table>中逐個進行配置(後面會提到)。

MBG配置中的其他幾個元素,基本上都是<context>的子元素,這些子元素(有嚴格的配置順序)包括:

<property> (0個或多個)
<plugin> (0個或多個)
<commentGenerator> (0個或1個)
<jdbcConnection> (1個)
<javaTypeResolver> (0個或1個)
<javaModelGenerator> (1個)
<sqlMapGenerator> (0個或1個)
<javaClientGenerator> (0個或1個)
<table> (1個或多個)
其中<property>屬性比較特殊,後面講解的時候都會和父元素一起進行講解。在講解<property>屬性前,我們先看看**什麼是分隔符?**。

這里通過一個例子說明。假設在Mysql資料庫中有一個表名為user info,你沒有看錯,中間是一個空格,這種情況下如果寫出select * from user info這樣的語句,肯定是要報錯的,在Mysql中的時候我們一般會寫成如下的樣子:

select * from `user info`
這里的使用的**反單引號(`)**就是**分隔符**,**分隔符**可以用於**表名**或者**列名**。

下面繼續看<property>支持的屬性:

autoDelimitKeywords
beginningDelimiter
endingDelimiter
javaFileEncoding
javaFormatter
xmlFormatter
由於這些屬性比較重要,這里一一講解。

首先是autoDelimitKeywords,當表名或者欄位名為SQL關鍵字的時候,可以設置該屬性為true,MBG會自動給表名或欄位名添加**分隔符**。

然後這里繼續上面的例子來講beginningDelimiter和endingDelimiter屬性。
由於beginningDelimiter和endingDelimiter的默認值為雙引號("),在Mysql中不能這么寫,所以還要將這兩個默認值改為**反單引號(`)**,配置如下:

<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
屬性javaFileEncoding設置要使用的Java文件的編碼,默認使用當前平台的編碼,只有當生產的編碼需要特殊指定時才需要使用,一般用不到。

最後兩個javaFormatter和xmlFormatter屬性**可能會**很有用,如果你想使用模板來定製生成的java文件和xml文件的樣式,你可以通過指定這兩個屬性的值來實現。

接下來分節對其他的子元素逐個進行介紹。

3.3.1 <plugin> 元素

該元素可以配置0個或者多個,不受限制。

<plugin>元素用來定義一個插件。插件用於擴展或修改通過MyBatis Generator (MBG)代碼生成器生成的代碼。

插件將按在配置中配置的順序執行。

有關插件的詳細信息可以參考開發插件和提供的插件了解更多。

3.3.2 <commentGenerator> 元素

該元素最多可以配置1個。

這個元素非常有用,相信很多人都有過這樣的需求,就是希望MBG生成的代碼中可以包含**注釋信息**,具體就是生成表或欄位的備注信息。

使用這個元素就能很簡單的實現我們想要的功能。這里先介紹該元素,介紹完後會舉例如何擴展實現該功能。

該元素有一個可選屬性type,可以指定用戶的實現類,該類需要實現org.mybatis.generator.api.CommentGenerator介面。而且必有一個默認的構造方法。這個屬性接收默認的特殊值DEFAULT,會使用默認的實現類org.mybatis.generator.internal.DefaultCommentGenerator。

默認的實現類中提供了兩個可選屬性,需要通過<property>屬性進行配置。

suppressAllComments:**阻止**生成注釋,默認為false
suppressDate:**阻止**生成的注釋包含時間戳,默認為false
一般情況下由於MBG生成的注釋信息沒有任何價值,而且有時間戳的情況下每次生成的注釋都不一樣,使用**版本控制**的時候每次都會提交,因而一般情況下我們都會屏蔽注釋信息,可以如下配置:

<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
接下來我們簡單舉例實現生成包含表欄位注釋信息的注釋

因為系統提供了一個默認的實現類,所以對我們來說,自己實現一個會很容易,最簡單的方法就是復制默認實現類代碼到一個新的文件中,修改類名如MyCommentGenerator,在你自己的實現類中,你可以選擇是否繼續支持上面的兩個屬性,你還可以增加對其他屬性的支持。

我們通過下面一個方法的修改來了解,其他幾個方法請自行修改(寫本章的時候我也沒有完全實現該類,所以不提供完整源碼了):

@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
if (introspectedColumn.getRemarks() != null && !introspectedColumn.getRemarks().equals("")) {
field.addJavaDocLine("/**");
field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
addJavadocTag(field, false);
field.addJavaDocLine(" */");
}
}
這個方法是給欄位添加註釋信息的,其中IntrospectedColumn包含了欄位的完整信息,通過getRemarks方法可以獲取欄位的注釋信息。上面這個方法修改起來還是很容易的。除了欄位的注釋外還有Getter和Setter,以及類的注釋。此外還有生成XML的注釋,大家可以根據默認的實現進行修改。

完成我們自己的實現類後,我們還需要做如下配置:

<commentGenerator type="com.github.abel533.mybatis.generator.MyCommentGenerator"/>
3.3.3 <jdbcConnection> 元素

<jdbcConnection>用於指定資料庫連接信息,該元素必選,並且只能有一個。

配置該元素只需要注意如果JDBC驅動不在**classpath**下,就需要通過<classPathEntry>元素引入jar包,這里**推薦**將jar包放到**classpath**下。

該元素有兩個必選屬性:

driverClass:訪問資料庫的JDBC驅動程序的完全限定類名
connectionURL:訪問資料庫的JDBC連接URL
該元素還有兩個可選屬性:

userId:訪問資料庫的用戶ID
password:訪問資料庫的密碼
此外該元素還可以接受多個<property>子元素,這里配置的<property>屬性都會添加到JDBC驅動的屬性中。

這個元素配置起來最容易,這里舉個簡單例子:

<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="">
</jdbcConnection>
3.3.4 <javaTypeResolver> 元素

該元素最多可以配置一個。

這個元素的配置用來指定JDBC類型和Java類型如何轉換。

該元素提供了一個可選的屬性type,和<commentGenerator>比較類型,提供了默認的實現DEFAULT,一般情況下使用默認即可,需要特殊處理的情況可以通過其他元素配置來解決,不建議修改該屬性。

該屬性還有一個可以配置的<property>元素。

可以配置的屬性為forceBigDecimals,該屬性可以控制是否強制DECIMAL和NUMERIC類型的欄位轉換為Java類型的java.math.BigDecimal,默認值為false,一般不需要配置。

默認情況下的轉換規則為:

如果精度>0或者長度>18,就會使用java.math.BigDecimal
如果精度=0並且10<=長度<=18,就會使用java.lang.Long
如果精度=0並且5<=長度<=9,就會使用java.lang.Integer
如果精度=0並且長度<5,就會使用java.lang.Short
如果設置為true,那麼一定會使用java.math.BigDecimal,配置示例如下:

<javaTypeResolver >
<property name="forceBigDecimals" value="true" />
</javaTypeResolver>
3.3.5 <javaModelGenerator> 元素

該元素必須配置一個,並且最多一個。

該元素用來控制生成的實體類,根據<context>中配置的defaultModelType,一個表可能會對應生成多個不同的實體類。一個表對應多個類實際上並不方便,所以前面也推薦使用flat,這種情況下一個表對應一個實體類。

該元素只有兩個屬性,都是必選的。

targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(<table>中會提到)。
targetProject:指定目標項目路徑,使用的是文件系統的絕對路徑。
該元素支持以下幾個<property>子元素屬性:

constructorBased:該屬性只對MyBatis3有效,如果true就會使用構造方法入參,如果false就會使用setter方式。默認為false。
enableSubPackages:如果true,MBG會根據catalog和schema來生成子包。如果false就會直接用targetPackage屬性。默認為false。
immutable:該屬性用來配置實體類屬性是否可變,如果設置為true,那麼constructorBased不管設置成什麼,都會使用構造方法入參,並且不會生成setter方法。如果為false,實體類屬性就可以改變。默認為false。
rootClass:設置所有實體類的基類。如果設置,需要使用類的全限定名稱。並且如果MBG能夠載入rootClass,那麼MBG不會覆蓋和父類中完全匹配的屬性。匹配規則:

屬性名完全相同
屬性類型相同
屬性有getter方法
屬性有setter方法
trimStrings:是否對資料庫查詢結果進行trim操作,如果設置為true就會生成類似這樣public void setUsername(String username) {this.username = username == null ? null : username.trim();}的setter方法。默認值為false。
配置示例如下:

<javaModelGenerator targetPackage="test.model" targetProject="E:\MyProject\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
3.3.6 <sqlMapGenerator> 元素

該元素可選,最多配置一個。但是有如下兩種必選的特殊情況:

如果targetRuntime目標是**iBATIS2**,該元素必須配置一個。
如果targetRuntime目標是**MyBatis3**,只有當<javaClientGenerator>需要XML時,該元素必須配置一個。 如果沒有配置<javaClientGenerator>,則使用以下的規則:
如果指定了一個<sqlMapGenerator>,那麼MBG將只生成XML的SQL映射文件和實體類。
如果沒有指定<sqlMapGenerator>,那麼MBG將只生成實體類。
該元素只有兩個屬性(和前面提過的<javaModelGenerator>的屬性含義一樣),都是必選的。

targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(<table>中會提到)。
targetProject:指定目標項目路徑,使用的是文件系統的絕對路徑。
該元素支持<property>子元素,只有一個可以配置的屬性:

enableSubPackages:如果true,MBG會根據catalog和schema來生成子包。如果false就會直接用targetPackage屬性。默認為false。
配置示例:

<sqlMapGenerator targetPackage="test.xml" targetProject="E:\MyProject\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
3.3.7 <javaClientGenerator> 元素

該元素可選,最多配置一個。

如果不配置該元素,就不會生成Mapper介面。

該元素有3個必選屬性:

type:該屬性用於選擇一個預定義的客戶端代碼(可以理解為Mapper介面)生成器,用戶可以自定義實現,需要繼承org.mybatis.generator.codegen.AbstractJavaClientGenerator類,必選有一個默認的構造方法。 該屬性提供了以下預定的代碼生成器,首先根據<context>的targetRuntime分成三類:
MyBatis3:
ANNOTATEDMAPPER:基於註解的Mapper介面,不會有對應的XML映射文件
MIXEDMAPPER:XML和註解的混合形式,(上面這種情況中的)SqlProvider註解方法會被XML替代。
XMLMAPPER:所有的方法都在XML中,介面調用依賴XML文件。
MyBatis3Simple:
ANNOTATEDMAPPER:基於註解的Mapper介面,不會有對應的XML映射文件
XMLMAPPER:所有的方法都在XML中,介面調用依賴XML文件。
Ibatis2Java2或**Ibatis2Java5**:
IBATIS:生成的對象符合iBATIS的DAO框架(不建議使用)。
GENERIC-CI:生成的對象將只依賴於SqlMapClient,通過構造方法注入。
GENERIC-SI:生成的對象將只依賴於SqlMapClient,通過setter方法注入。
SPRING:生成的對象符合Spring的DAO介面
targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(<table>中會提到)。
targetProject:指定目標項目路徑,使用的是文件系統的絕對路徑。
該元素還有一個可選屬性:

implementationPackage:如果指定了該屬性,實現類就會生成在這個包中。
該元素支持<property>子元素設置的屬性:

enableSubPackages
exampleMethodVisibility
methodNameCalculator
rootInterface
useLegacyBuilder
這幾個屬性不太常用,具體作用請看完整的文檔,這里對rootInterface做個簡單介紹。

rootInterface用於指定一個所有生成的介面都繼承的父介面。 這個值可以通過<table>配置的rootInterface屬性覆蓋。

這個屬性對於通用Mapper來說,可以讓生成的所有介面都繼承該介面。

『柒』 destoon首頁源碼里有個meta name="generator"在哪修改

在模版里了,模版的裡面的 頭部模版里

『捌』 python如何修改已創建好的generator

list=range(10)
g1=(iforiinlist)


上面是如何轉換list成為生成器,


至於如何修改,如果是指在程序里動態修改的話,可以用類自定義個生成器,然後再定義方法去修改它。

『玖』 eclipse怎麼安裝generator-master.zip插件

首先我要告訴你,你下載的文件不是一個插件包,看你的文件名應該是從git上面下載的源碼,所以你首先的下一個正確的插件包,如果是正確的插件包是zip格式,如果解壓裡面的會有xml配置文件和features、plugins兩個文件夾,可以在不解壓的情況下在Eclipse的Help>Install new Software>add>Archive,然後選中你的插件包文件,如果解壓了就點那個Local按鈕。解壓後的還有一種方法就是直接將解壓出來的兩個文件夾下的文件復制到Eclipse目錄下的相應同名文件下。

『拾』 關於generator非同步編程的理解以及如何動手寫

關於generator非同步編程的理解以及如何動手寫一個co模塊

generator出現之前,想要實現對非同步隊列中任務的流程式控制制,大概有這么一下幾種方式:

  • 回調函數

  • 事件監聽

  • 發布/訂閱

  • promise對象

  • 第一種方式想必大家是最常見的,其代碼組織方式如下:

    我們把函數放到run的執行器裡面,便實現了同步操作非同步代碼的過程

熱點內容
qq怎麼上傳相冊圖片 發布:2024-10-27 22:53:21 瀏覽:815
差額及演算法 發布:2024-10-27 22:36:44 瀏覽:291
解壓番茄球有毒嗎 發布:2024-10-27 22:36:43 瀏覽:861
動態密碼在哪裡獲得 發布:2024-10-27 22:36:42 瀏覽:183
ios9照片加密 發布:2024-10-27 22:18:29 瀏覽:49
pythonyaml安裝 發布:2024-10-27 22:06:32 瀏覽:585
php5升級到php7 發布:2024-10-27 21:46:06 瀏覽:737
安卓機都在哪裡下載游戲 發布:2024-10-27 21:23:57 瀏覽:648
伺服器里的視頻怎麼做成鏈接 發布:2024-10-27 21:23:19 瀏覽:383
資料庫還原出錯 發布:2024-10-27 21:23:14 瀏覽:379