一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Mybatis Generator最完美配置文件詳解(完整版)

Mybatis Generator最完美配置文件詳解(完整版)

2020-06-29 11:24小碼哥Java學(xué)院 JAVA教程

今天小編給大家整理了一篇關(guān)于Mybatis Generator最完美配置文件詳解教程,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧

最近沒做項(xiàng)目,重新整理了一個(gè)最完整的Mybatis Generator(簡(jiǎn)稱MBG)的最完整配置文件,帶詳解,再也不用去看EN的User Guide了;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<?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>
<!-- 可以用于加載配置項(xiàng)或者配置文件,在整個(gè)配置文件中就可以使用${propertyKey}的方式來引用配置項(xiàng)
resource:配置資源加載地址,使用resource,MBG從classpath開始找,比如com/myproject/generatorConfig.properties
url:配置資源加載地質(zhì),使用URL的方式,比如file:///C:/myfolder/generatorConfig.properties.
注意,兩個(gè)屬性只能選址一個(gè);
另外,如果使用了mybatis-generator-maven-plugin,那么在pom.xml中定義的properties都可以直接在generatorConfig.xml中使用
<properties resource="" url="" />
-->
<!-- 在MBG工作的時(shí)候,需要額外加載的依賴包
location屬性指明加載jar/zip包的全路徑
<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />
-->
<!--
context:生成一組對(duì)象的環(huán)境
id:必選,上下文id,用于在生成錯(cuò)誤時(shí)提示
defaultModelType:指定生成對(duì)象的樣式
1,conditional:類似hierarchical;
2,flat:所有內(nèi)容(主鍵,blob)等全部生成在一個(gè)對(duì)象中;
3,hierarchical:主鍵生成一個(gè)XXKey對(duì)象(key class),Blob等單獨(dú)生成一個(gè)對(duì)象,其他簡(jiǎn)單屬性在一個(gè)對(duì)象中(record class)
targetRuntime:
1,MyBatis3:默認(rèn)的值,生成基于MyBatis3.x以上版本的內(nèi)容,包括XXXBySample;
2,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample;
introspectedColumnImpl:類全限定名,用于擴(kuò)展MBG
-->
<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple" >
<!-- 自動(dòng)識(shí)別數(shù)據(jù)庫關(guān)鍵字,默認(rèn)false,如果設(shè)置為true,根據(jù)SqlReservedWords中定義的關(guān)鍵字列表;
一般保留默認(rèn)值,遇到數(shù)據(jù)庫關(guān)鍵字(Java關(guān)鍵字),使用columnOverride覆蓋
-->
<property name="autoDelimitKeywords" value="false"/>
<!-- 生成的Java文件的編碼 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 格式化java代碼 -->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!-- 格式化XML代碼 -->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
<!-- beginningDelimiter和endingDelimiter:指明數(shù)據(jù)庫的用于標(biāo)記數(shù)據(jù)庫對(duì)象名的符號(hào),比如ORACLE就是雙引號(hào),MYSQL默認(rèn)是`反引號(hào); -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- 必須要有的,使用這個(gè)配置鏈接數(shù)據(jù)庫
@TODO:是否可以擴(kuò)展
-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///pss" userId="root" password="admin">
<!-- 這里面可以設(shè)置property屬性,每一個(gè)property屬性都設(shè)置到配置的Driver上 -->
</jdbcConnection>
<!-- java類型處理器
用于處理DB中的類型到Java中的類型,默認(rèn)使用JavaTypeResolverDefaultImpl;
注意一點(diǎn),默認(rèn)會(huì)先嘗試使用Integer,Long,Short等來對(duì)應(yīng)DECIMAL和 NUMERIC數(shù)據(jù)類型;
-->
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
<!--
true:使用BigDecimal對(duì)應(yīng)DECIMAL和 NUMERIC數(shù)據(jù)類型
false:默認(rèn),
scale>0;length>18:使用BigDecimal;
scale=0;length[10,18]:使用Long;
scale=0;length[5,9]:使用Integer;
scale=0;length<5:使用Short;
-->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- java模型創(chuàng)建器,是必須要的元素
負(fù)責(zé):1,key類(見context的defaultModelType);2,java類;3,查詢類
targetPackage:生成的類要放的包,真實(shí)的包受enableSubPackages屬性控制;
targetProject:目標(biāo)項(xiàng)目,指定一個(gè)存在的目錄下,生成的內(nèi)容會(huì)放到指定目錄中,如果目錄不存在,MBG不會(huì)自動(dòng)建目錄
-->
<javaModelGenerator targetPackage="com._520it.mybatis.domain" targetProject="src/main/java">
<!-- for MyBatis3/MyBatis3Simple
自動(dòng)為每一個(gè)生成的類創(chuàng)建一個(gè)構(gòu)造方法,構(gòu)造方法包含了所有的field;而不是使用setter;
-->
<property name="constructorBased" value="false"/>
<!-- 在targetPackage的基礎(chǔ)上,根據(jù)數(shù)據(jù)庫的schema再生成一層package,最終生成的類放在這個(gè)package下,默認(rèn)為false -->
<property name="enableSubPackages" value="true"/>
<!-- for MyBatis3 / MyBatis3Simple
是否創(chuàng)建一個(gè)不可變的類,如果為true
那么MBG會(huì)創(chuàng)建一個(gè)沒有setter方法的類,取而代之的是類似constructorBased的類
-->
<property name="immutable" value="false"/>
<!-- 設(shè)置一個(gè)根對(duì)象,
如果設(shè)置了這個(gè)根對(duì)象,那么生成的keyClass或者recordClass會(huì)繼承這個(gè)類;在Table的rootClass屬性中可以覆蓋該選項(xiàng)
注意:如果在key class或者record class中有root class相同的屬性,MBG就不會(huì)重新生成這些屬性了,包括:
1,屬性名相同,類型相同,有相同的getter/setter方法;
-->
<property name="rootClass" value="com._520it.mybatis.domain.BaseDomain"/>
<!-- 設(shè)置是否在getter方法中,對(duì)String類型字段調(diào)用trim()方法 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成SQL map的XML文件生成器,
注意,在Mybatis3之后,我們可以使用mapper.xml文件+Mapper接口(或者不用mapper接口),
或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的話,這個(gè)元素就必須配置
targetPackage/targetProject:同javaModelGenerator
-->
<sqlMapGenerator targetPackage="com._520it.mybatis.mapper" targetProject="src/main/resources">
<!-- 在targetPackage的基礎(chǔ)上,根據(jù)數(shù)據(jù)庫的schema再生成一層package,最終生成的類放在這個(gè)package下,默認(rèn)為false -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 對(duì)于mybatis來說,即生成Mapper接口,注意,如果沒有配置該元素,那么默認(rèn)不會(huì)生成Mapper接口
targetPackage/targetProject:同javaModelGenerator
type:選擇怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
1,ANNOTATEDMAPPER:會(huì)生成使用Mapper接口+Annotation的方式創(chuàng)建(SQL生成在annotation中),不會(huì)生成對(duì)應(yīng)的XML;
2,MIXEDMAPPER:使用混合配置,會(huì)生成Mapper接口,并適當(dāng)添加合適的Annotation,但是XML會(huì)生成在XML中;
3,XMLMAPPER:會(huì)生成Mapper接口,接口完全依賴XML;
注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
-->
<javaClientGenerator targetPackage="com._520it.mybatis.mapper" type="ANNOTATEDMAPPER" targetProject="src/main/java">
<!-- 在targetPackage的基礎(chǔ)上,根據(jù)數(shù)據(jù)庫的schema再生成一層package,最終生成的類放在這個(gè)package下,默認(rèn)為false -->
<property name="enableSubPackages" value="true"/>
<!-- 可以為所有生成的接口添加一個(gè)父接口,但是MBG只負(fù)責(zé)生成,不負(fù)責(zé)檢查
<property name="rootInterface" value=""/>
-->
</javaClientGenerator>
<!-- 選擇一個(gè)table來生成相關(guān)文件,可以有一個(gè)或多個(gè)table,必須要有table元素
選擇的table會(huì)生成一下文件:
1,SQL map文件
2,生成一個(gè)主鍵類;
3,除了BLOB和主鍵的其他字段的類;
4,包含BLOB的類;
5,一個(gè)用戶生成動(dòng)態(tài)查詢的條件類(selectByExample, deleteByExample),可選;
6,Mapper接口(可選)
tableName(必要):要生成對(duì)象的表名;
注意:大小寫敏感問題。正常情況下,MBG會(huì)自動(dòng)的去識(shí)別數(shù)據(jù)庫標(biāo)識(shí)符的大小寫敏感度,在一般情況下,MBG會(huì)
根據(jù)設(shè)置的schema,catalog或tablename去查詢數(shù)據(jù)表,按照下面的流程:
1,如果schema,catalog或tablename中有空格,那么設(shè)置的是什么格式,就精確的使用指定的大小寫格式去查詢;
2,否則,如果數(shù)據(jù)庫的標(biāo)識(shí)符使用大寫的,那么MBG自動(dòng)把表名變成大寫再查找;
3,否則,如果數(shù)據(jù)庫的標(biāo)識(shí)符使用小寫的,那么MBG自動(dòng)把表名變成小寫再查找;
4,否則,使用指定的大小寫格式查詢;
另外的,如果在創(chuàng)建表的時(shí)候,使用的""把數(shù)據(jù)庫對(duì)象規(guī)定大小寫,就算數(shù)據(jù)庫標(biāo)識(shí)符是使用的大寫,在這種情況下也會(huì)使用給定的大小寫來創(chuàng)建表名;
這個(gè)時(shí)候,請(qǐng)?jiān)O(shè)置delimitIdentifiers="true"即可保留大小寫格式;
可選:
1,schema:數(shù)據(jù)庫的schema;
2,catalog:數(shù)據(jù)庫的catalog;
3,alias:為數(shù)據(jù)表設(shè)置的別名,如果設(shè)置了alias,那么生成的所有的SELECT SQL語句中,列名會(huì)變成:alias_actualColumnName
4,domainObjectName:生成的domain類的名字,如果不設(shè)置,直接使用表名作為domain類的名字;可以設(shè)置為somepck.domainName,那么會(huì)自動(dòng)把domainName類再放到somepck包里面;
5,enableInsert(默認(rèn)true):指定是否生成insert語句;
6,enableSelectByPrimaryKey(默認(rèn)true):指定是否生成按照主鍵查詢對(duì)象的語句(就是getById或get);
7,enableSelectByExample(默認(rèn)true):MyBatis3Simple為false,指定是否生成動(dòng)態(tài)查詢語句;
8,enableUpdateByPrimaryKey(默認(rèn)true):指定是否生成按照主鍵修改對(duì)象的語句(即update);
9,enableDeleteByPrimaryKey(默認(rèn)true):指定是否生成按照主鍵刪除對(duì)象的語句(即delete);
10,enableDeleteByExample(默認(rèn)true):MyBatis3Simple為false,指定是否生成動(dòng)態(tài)刪除語句;
11,enableCountByExample(默認(rèn)true):MyBatis3Simple為false,指定是否生成動(dòng)態(tài)查詢總條數(shù)語句(用于分頁的總條數(shù)查詢);
12,enableUpdateByExample(默認(rèn)true):MyBatis3Simple為false,指定是否生成動(dòng)態(tài)修改語句(只修改對(duì)象中不為空的屬性);
13,modelType:參考context元素的defaultModelType,相當(dāng)于覆蓋;
14,delimitIdentifiers:參考tableName的解釋,注意,默認(rèn)的delimitIdentifiers是雙引號(hào),如果類似MYSQL這樣的數(shù)據(jù)庫,使用的是`(反引號(hào),那么還需要設(shè)置context的beginningDelimiter和endingDelimiter屬性)
15,delimitAllColumns:設(shè)置是否所有生成的SQL中的列名都使用標(biāo)識(shí)符引起來。默認(rèn)為false,delimitIdentifiers參考context的屬性
注意,table里面很多參數(shù)都是對(duì)javaModelGenerator,context等元素的默認(rèn)屬性的一個(gè)復(fù)寫;
-->
<table tableName="userinfo" >
<!-- 參考 javaModelGenerator 的 constructorBased屬性-->
<property name="constructorBased" value="false"/>
<!-- 默認(rèn)為false,如果設(shè)置為true,在生成的SQL中,table名字不會(huì)加上catalog或schema; -->
<property name="ignoreQualifiersAtRuntime" value="false"/>
<!-- 參考 javaModelGenerator 的 immutable 屬性 -->
<property name="immutable" value="false"/>
<!-- 指定是否只生成domain類,如果設(shè)置為true,只生成domain類,如果還配置了sqlMapGenerator,那么在mapper XML文件中,只生成resultMap元素 -->
<property name="modelOnly" value="false"/>
<!-- 參考 javaModelGenerator 的 rootClass 屬性
<property name="rootClass" value=""/>
-->
<!-- 參考javaClientGenerator 的 rootInterface 屬性
<property name="rootInterface" value=""/>
-->
<!-- 如果設(shè)置了runtimeCatalog,那么在生成的SQL中,使用該指定的catalog,而不是table元素上的catalog
<property name="runtimeCatalog" value=""/>
-->
<!-- 如果設(shè)置了runtimeSchema,那么在生成的SQL中,使用該指定的schema,而不是table元素上的schema
<property name="runtimeSchema" value=""/>
-->
<!-- 如果設(shè)置了runtimeTableName,那么在生成的SQL中,使用該指定的tablename,而不是table元素上的tablename
<property name="runtimeTableName" value=""/>
-->
<!-- 注意,該屬性只針對(duì)MyBatis3Simple有用;
如果選擇的runtime是MyBatis3Simple,那么會(huì)生成一個(gè)SelectAll方法,如果指定了selectAllOrderByClause,那么會(huì)在該SQL中添加指定的這個(gè)order條件;
-->
<property name="selectAllOrderByClause" value="age desc,username asc"/>
<!-- 如果設(shè)置為true,生成的model類會(huì)直接使用column本身的名字,而不會(huì)再使用駝峰命名方法,比如BORN_DATE,生成的屬性名字就是BORN_DATE,而不會(huì)是bornDate -->
<property name="useActualColumnNames" value="false"/>
<!-- generatedKey用于生成生成主鍵的方法,
如果設(shè)置了該元素,MBG會(huì)在生成的<insert>元素中生成一條正確的<selectKey>元素,該元素可選
column:主鍵的列名;
sqlStatement:要生成的selectKey語句,有以下可選項(xiàng):
Cloudscape:相當(dāng)于selectKey的SQL為: VALUES IDENTITY_VAL_LOCAL()
DB2 :相當(dāng)于selectKey的SQL為: VALUES IDENTITY_VAL_LOCAL()
DB2_MF :相當(dāng)于selectKey的SQL為:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
Derby :相當(dāng)于selectKey的SQL為:VALUES IDENTITY_VAL_LOCAL()
HSQLDB :相當(dāng)于selectKey的SQL為:CALL IDENTITY()
Informix :相當(dāng)于selectKey的SQL為:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
MySql :相當(dāng)于selectKey的SQL為:SELECT LAST_INSERT_ID()
SqlServer :相當(dāng)于selectKey的SQL為:SELECT SCOPE_IDENTITY()
SYBASE :相當(dāng)于selectKey的SQL為:SELECT @@IDENTITY
JDBC :相當(dāng)于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty屬性
<generatedKey column="" sqlStatement=""/>
-->
<!--
該元素會(huì)在根據(jù)表中列名計(jì)算對(duì)象屬性名之前先重命名列名,非常適合用于表中的列都有公用的前綴字符串的時(shí)候,
比如列名為:CUST_ID,CUST_NAME,CUST_EMAIL,CUST_ADDRESS等;
那么就可以設(shè)置searchString為"^CUST_",并使用空白替換,那么生成的Customer對(duì)象中的屬性名稱就不是
custId,custName等,而是先被替換為ID,NAME,EMAIL,然后變成屬性:id,name,email;
注意,MBG是使用java.util.regex.Matcher.replaceAll來替換searchString和replaceString的,
如果使用了columnOverride元素,該屬性無效;
<columnRenamingRule searchString="" replaceString=""/>
-->
<!-- 用來修改表中某個(gè)列的屬性,MBG會(huì)使用修改后的列來生成domain的屬性;
column:要重新設(shè)置的列名;
注意,一個(gè)table元素中可以有多個(gè)columnOverride元素哈~
-->
<columnOverride column="username">
<!-- 使用property屬性來指定列要生成的屬性名稱 -->
<property name="property" value="userName"/>
<!-- javaType用于指定生成的domain的屬性類型,使用類型的全限定名
<property name="javaType" value=""/>
-->
<!-- jdbcType用于指定該列的JDBC類型
<property name="jdbcType" value=""/>
-->
<!-- typeHandler 用于指定該列使用到的TypeHandler,如果要指定,配置類型處理器的全限定名
注意,mybatis中,不會(huì)生成到mybatis-config.xml中的typeHandler
只會(huì)生成類似:where id = #{id,jdbcType=BIGINT,typeHandler=com._520it.mybatis.MyTypeHandler}的參數(shù)描述
<property name="jdbcType" value=""/>
-->
<!-- 參考table元素的delimitAllColumns配置,默認(rèn)為false
<property name="delimitedColumnName" value=""/>
-->
</columnOverride>
<!-- ignoreColumn設(shè)置一個(gè)MGB忽略的列,如果設(shè)置了改列,那么在生成的domain中,生成的SQL中,都不會(huì)有該列出現(xiàn)
column:指定要忽略的列的名字;
delimitedColumnName:參考table元素的delimitAllColumns配置,默認(rèn)為false
注意,一個(gè)table元素中可以有多個(gè)ignoreColumn元素
<ignoreColumn column="deptId" delimitedColumnName=""/>
-->
</table>
</context>
</generatorConfiguration>

以上所述是小編給大家介紹的Mybatis Generator最完美配置文件詳解(完整版),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.jianshu.com/p/e09d2370b796

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产v视频| 成年性生交大片免费看 | 波多野结衣不卡 | 国产激情久久久久影院小草 | 亚洲AV久久无码精品蜜桃 | 日本高清va不卡视频在线观看 | 韩国久播影院理论片不卡影院 | 亚洲国产日韩制服在线观看 | 日本三级在线观看免费 | 俄罗斯处女摘花 | 国产露脸对白刺激3p在线 | 明星乱淫 | 大桥未久一区二区 | 1024免费福利永久观看网站 | 99精品国产成人一区二区 | 波多野结衣xxxx性精品 | 日本一在线中文字幕天堂 | 超碰97 | 三极黄色 | 狠狠色成人综合网图片区 | 香蕉在线播放 | 亚洲欧洲日产国码天堂 | 国产成人亚洲综合a∨婷婷 国产成人亚洲精品乱码在线观看 | 精品在线播放 | 456亚洲老头视频 | 97午夜视频 | 贰佰麻豆剧果冻传媒一二三区 | 欧美贵妇videos办公室 | 高清国语自产拍免费视频国产 | 特黄特级毛片免费视 | 国产免费看黄的私人影院 | 欧美日韩一区视频 | 美女撒尿部位无遮挡 | 色淫阁小说 | 513热点网 | 日本久久啪啪婷婷激情五月 | 色综合久久最新中文字幕 | 桃乃木香在线 | 国产在线一区二区杨幂 | 日本午夜影院 | 日本一区二区视频免费播放 |