Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mybatis-generator-plugin
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
mybatis-generator-plugin
Commits
fbecf4ce
Commit
fbecf4ce
authored
Jun 21, 2017
by
hewei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
美化xml输出格式,实现和官方一致80换行,便于阅读
parent
f62d78d1
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
108 additions
and
82 deletions
+108
-82
src/main/java/com/itfsw/mybatis/generator/plugins/BatchInsertPlugin.java
...om/itfsw/mybatis/generator/plugins/BatchInsertPlugin.java
+11
-14
src/main/java/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
...ava/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
+47
-32
src/main/java/com/itfsw/mybatis/generator/plugins/utils/XmlElementGeneratorTools.java
...tis/generator/plugins/utils/XmlElementGeneratorTools.java
+50
-36
No files found.
src/main/java/com/itfsw/mybatis/generator/plugins/BatchInsertPlugin.java
View file @
fbecf4ce
...
...
@@ -23,10 +23,7 @@ import com.itfsw.mybatis.generator.plugins.utils.XmlElementGeneratorTools;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.dom.java.*
;
import
org.mybatis.generator.api.dom.xml.Attribute
;
import
org.mybatis.generator.api.dom.xml.Document
;
import
org.mybatis.generator.api.dom.xml.TextElement
;
import
org.mybatis.generator.api.dom.xml.XmlElement
;
import
org.mybatis.generator.api.dom.xml.*
;
import
org.mybatis.generator.codegen.mybatis3.ListUtilities
;
import
org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities
;
...
...
@@ -53,7 +50,7 @@ public class BatchInsertPlugin extends BasePlugin {
// 插件使用前提是数据库为MySQL或者SQLserver,因为返回主键使用了JDBC的getGenereatedKeys方法获取主键
if
(
"com.mysql.jdbc.Driver"
.
equalsIgnoreCase
(
this
.
getContext
().
getJdbcConnectionConfiguration
().
getDriverClass
())
==
false
&&
"com.microsoft.jdbc.sqlserver.SQLServer"
.
equalsIgnoreCase
(
this
.
getContext
().
getJdbcConnectionConfiguration
().
getDriverClass
())
==
false
&&
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
.
equalsIgnoreCase
(
this
.
getContext
().
getJdbcConnectionConfiguration
().
getDriverClass
())
==
false
){
&&
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
.
equalsIgnoreCase
(
this
.
getContext
().
getJdbcConnectionConfiguration
().
getDriverClass
())
==
false
)
{
logger
.
error
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"插件使用前提是数据库为MySQL或者SQLserver,因为返回主键使用了JDBC的getGenereatedKeys方法获取主键!"
);
return
false
;
}
...
...
@@ -69,11 +66,9 @@ public class BatchInsertPlugin extends BasePlugin {
}
/**
* Java Client Methods 生成
* 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
*
* @param interfaze
* @param topLevelClass
* @param introspectedTable
...
...
@@ -97,7 +92,7 @@ public class BatchInsertPlugin extends BasePlugin {
logger
.
debug
(
"itfsw(批量插入插件):"
+
interfaze
.
getType
().
getShortName
()
+
"增加batchInsert方法。"
);
// 2. batchInsertSelective
FullyQualifiedJavaType
selectiveType
=
new
FullyQualifiedJavaType
(
introspectedTable
.
getRules
().
calculateAllFieldsClass
().
getShortName
()
+
"."
+
ModelColumnPlugin
.
ENUM_NAME
);
FullyQualifiedJavaType
selectiveType
=
new
FullyQualifiedJavaType
(
introspectedTable
.
getRules
().
calculateAllFieldsClass
().
getShortName
()
+
"."
+
ModelColumnPlugin
.
ENUM_NAME
);
Method
mBatchInsertSelective
=
JavaElementGeneratorTools
.
generateMethod
(
METHOD_BATCH_INSERT_SELECTIVE
,
JavaVisibility
.
DEFAULT
,
...
...
@@ -116,7 +111,6 @@ public class BatchInsertPlugin extends BasePlugin {
/**
* SQL Map Methods 生成
* 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
*
* @param document
* @param introspectedTable
* @return
...
...
@@ -135,7 +129,9 @@ public class BatchInsertPlugin extends BasePlugin {
XmlElementGeneratorTools
.
useGeneratedKeys
(
batchInsertEle
,
introspectedTable
);
batchInsertEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
batchInsertEle
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
())));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateKeys
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
())))
{
batchInsertEle
.
addElement
(
element
);
}
// 添加foreach节点
XmlElement
foreachElement
=
new
XmlElement
(
"foreach"
);
...
...
@@ -143,8 +139,9 @@ public class BatchInsertPlugin extends BasePlugin {
foreachElement
.
addAttribute
(
new
Attribute
(
"item"
,
"item"
));
foreachElement
.
addAttribute
(
new
Attribute
(
"separator"
,
","
));
foreachElement
.
addElement
(
XmlElementGeneratorTools
.
generateValues
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
()),
"item."
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateValues
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
()),
"item."
))
{
foreachElement
.
addElement
(
element
);
}
// values 构建
batchInsertEle
.
addElement
(
new
TextElement
(
"values"
));
...
...
@@ -165,7 +162,7 @@ public class BatchInsertPlugin extends BasePlugin {
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
XmlElementGeneratorTools
.
useGeneratedKeys
(
element
,
introspectedTable
);
element
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()+
" ("
));
element
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()
+
" ("
));
XmlElement
foreachInsertColumns
=
new
XmlElement
(
"foreach"
);
foreachInsertColumns
.
addAttribute
(
new
Attribute
(
"collection"
,
"selective"
));
...
...
@@ -200,7 +197,7 @@ public class BatchInsertPlugin extends BasePlugin {
for
(
int
i
=
0
;
i
<
columns1
.
size
();
i
++)
{
IntrospectedColumn
introspectedColumn
=
columns
.
get
(
i
);
XmlElement
check
=
new
XmlElement
(
"if"
);
check
.
addAttribute
(
new
Attribute
(
"test"
,
"'"
+
introspectedColumn
.
getActualColumnName
()+
"' == column.value"
));
check
.
addAttribute
(
new
Attribute
(
"test"
,
"'"
+
introspectedColumn
.
getActualColumnName
()
+
"' == column.value"
));
check
.
addElement
(
new
TextElement
(
MyBatis3FormattingUtilities
.
getParameterClause
(
introspectedColumn
,
"item."
)));
foreachInsertColumnsCheck
.
addElement
(
check
);
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
View file @
fbecf4ce
...
...
@@ -22,10 +22,7 @@ import com.itfsw.mybatis.generator.plugins.utils.XmlElementGeneratorTools;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.dom.java.*
;
import
org.mybatis.generator.api.dom.xml.Attribute
;
import
org.mybatis.generator.api.dom.xml.Document
;
import
org.mybatis.generator.api.dom.xml.TextElement
;
import
org.mybatis.generator.api.dom.xml.XmlElement
;
import
org.mybatis.generator.api.dom.xml.*
;
import
org.mybatis.generator.codegen.mybatis3.ListUtilities
;
import
org.mybatis.generator.internal.util.StringUtility
;
...
...
@@ -61,7 +58,7 @@ public class UpsertPlugin extends BasePlugin {
public
boolean
validate
(
List
<
String
>
warnings
)
{
// 插件使用前提是数据库为MySQL
if
(
"com.mysql.jdbc.Driver"
.
equalsIgnoreCase
(
this
.
getContext
().
getJdbcConnectionConfiguration
().
getDriverClass
())
==
false
){
if
(
"com.mysql.jdbc.Driver"
.
equalsIgnoreCase
(
this
.
getContext
().
getJdbcConnectionConfiguration
().
getDriverClass
())
==
false
)
{
logger
.
error
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"插件使用前提是数据库为MySQL!"
);
return
false
;
}
...
...
@@ -70,7 +67,7 @@ public class UpsertPlugin extends BasePlugin {
Properties
properties
=
this
.
getProperties
();
String
allowMultiQueries
=
properties
.
getProperty
(
PRE_ALLOW_MULTI_QUERIES
);
this
.
allowMultiQueries
=
allowMultiQueries
==
null
?
false
:
StringUtility
.
isTrue
(
allowMultiQueries
);
if
(
this
.
allowMultiQueries
){
if
(
this
.
allowMultiQueries
)
{
// 提示用户注意信息
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"插件您开启了allowMultiQueries支持,注意在jdbc url 配置中增加“allowMultiQueries=true”支持(不怎么建议使用该功能,开启多sql提交会增加sql注入的风险,请确保你所有sql都使用MyBatis书写,请不要使用statement进行sql提交)!"
);
}
...
...
@@ -81,7 +78,6 @@ public class UpsertPlugin extends BasePlugin {
/**
* Java Client Methods 生成
* 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
*
* @param interfaze
* @param topLevelClass
* @param introspectedTable
...
...
@@ -113,7 +109,7 @@ public class UpsertPlugin extends BasePlugin {
interfaze
.
addMethod
(
mUpsertSelective
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
interfaze
.
getType
().
getShortName
()
+
"增加upsertSelective方法。"
);
if
(
this
.
allowMultiQueries
){
if
(
this
.
allowMultiQueries
)
{
// ====================================== 3. upsertByExample ======================================
Method
mUpsertByExample
=
JavaElementGeneratorTools
.
generateMethod
(
METHOD_UPSERT_BY_EXAMPLE
,
...
...
@@ -142,7 +138,7 @@ public class UpsertPlugin extends BasePlugin {
}
// !!! 注意这里的行为不以有没有生成Model 的 WithBLOBs类为基准
if
(
introspectedTable
.
hasBLOBColumns
()){
if
(
introspectedTable
.
hasBLOBColumns
())
{
// ====================================== 1. upsertWithBLOBs ======================================
Method
mUpsertWithBLOBs
=
JavaElementGeneratorTools
.
generateMethod
(
METHOD_UPSERT_WITH_BLOBS
,
...
...
@@ -167,7 +163,7 @@ public class UpsertPlugin extends BasePlugin {
interfaze
.
addMethod
(
mUpsertSelectiveWithBLOBs
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
interfaze
.
getType
().
getShortName
()
+
"增加upsertSelective方法。"
);
if
(
this
.
allowMultiQueries
){
if
(
this
.
allowMultiQueries
)
{
// ====================================== 3. upsertByExampleWithBLOBs ======================================
Method
mUpsertByExampleWithBLOBs
=
JavaElementGeneratorTools
.
generateMethod
(
METHOD_UPSERT_BY_EXAMPLE_WITH_BLOBS
,
...
...
@@ -202,7 +198,6 @@ public class UpsertPlugin extends BasePlugin {
/**
* SQL Map Methods 生成
* 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
*
* @param document
* @param introspectedTable
* @return
...
...
@@ -213,7 +208,7 @@ public class UpsertPlugin extends BasePlugin {
this
.
generateXmlElementWithoutBLOBs
(
document
,
introspectedTable
);
// !!! 注意这里的行为不以有没有生成Model 的 WithBLOBs类为基准
if
(
introspectedTable
.
hasBLOBColumns
()){
if
(
introspectedTable
.
hasBLOBColumns
())
{
this
.
generateXmlElementWithBLOBs
(
document
,
introspectedTable
);
}
...
...
@@ -222,11 +217,10 @@ public class UpsertPlugin extends BasePlugin {
/**
* 当Model有生成WithBLOBs类时的情况
*
* @param document
* @param introspectedTable
*/
private
void
generateXmlElementWithBLOBs
(
Document
document
,
IntrospectedTable
introspectedTable
){
private
void
generateXmlElementWithBLOBs
(
Document
document
,
IntrospectedTable
introspectedTable
)
{
// ====================================== 1. upsert ======================================
XmlElement
eleUpsertWithBLOBs
=
new
XmlElement
(
"insert"
);
eleUpsertWithBLOBs
.
addAttribute
(
new
Attribute
(
"id"
,
METHOD_UPSERT_WITH_BLOBS
));
...
...
@@ -241,11 +235,17 @@ public class UpsertPlugin extends BasePlugin {
// insert
eleUpsertWithBLOBs
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsertWithBLOBs
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
introspectedTable
.
getAllColumns
()));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateKeys
(
introspectedTable
.
getAllColumns
()))
{
eleUpsertWithBLOBs
.
addElement
(
element
);
}
eleUpsertWithBLOBs
.
addElement
(
new
TextElement
(
"values"
));
eleUpsertWithBLOBs
.
addElement
(
XmlElementGeneratorTools
.
generateValues
(
introspectedTable
.
getAllColumns
()));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateValues
(
introspectedTable
.
getAllColumns
()))
{
eleUpsertWithBLOBs
.
addElement
(
element
);
}
eleUpsertWithBLOBs
.
addElement
(
new
TextElement
(
"on duplicate key update "
));
eleUpsertWithBLOBs
.
addElement
(
XmlElementGeneratorTools
.
generateSets
(
introspectedTable
.
getAllColumns
()));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateSets
(
introspectedTable
.
getAllColumns
()))
{
eleUpsertWithBLOBs
.
addElement
(
element
);
}
document
.
getRootElement
().
addElement
(
eleUpsertWithBLOBs
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()
+
"增加upsert实现方法。"
);
...
...
@@ -273,7 +273,7 @@ public class UpsertPlugin extends BasePlugin {
document
.
getRootElement
().
addElement
(
eleUpsertSelectiveWithBLOBs
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()
+
"增加upsertSelective实现方法。"
);
if
(
this
.
allowMultiQueries
){
if
(
this
.
allowMultiQueries
)
{
// ====================================== 2. upsertByExample ======================================
XmlElement
eleUpsertByExampleWithBLOBs
=
new
XmlElement
(
"insert"
);
eleUpsertByExampleWithBLOBs
.
addAttribute
(
new
Attribute
(
"id"
,
METHOD_UPSERT_BY_EXAMPLE_WITH_BLOBS
));
...
...
@@ -287,7 +287,9 @@ public class UpsertPlugin extends BasePlugin {
// insert
eleUpsertByExampleWithBLOBs
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsertByExampleWithBLOBs
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
introspectedTable
.
getAllColumns
()));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateKeys
(
introspectedTable
.
getAllColumns
()))
{
eleUpsertByExampleWithBLOBs
.
addElement
(
element
);
}
this
.
generateExistsClause
(
introspectedTable
,
eleUpsertByExampleWithBLOBs
,
false
,
true
);
// multiQueries
...
...
@@ -296,7 +298,10 @@ public class UpsertPlugin extends BasePlugin {
// update
eleUpsertByExampleWithBLOBs
.
addElement
(
new
TextElement
(
"update "
+
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
()));
eleUpsertByExampleWithBLOBs
.
addElement
(
new
TextElement
(
"set"
));
eleUpsertByExampleWithBLOBs
.
addElement
(
XmlElementGeneratorTools
.
generateSets
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
()),
"record."
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateSets
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
()),
"record."
))
{
eleUpsertByExampleWithBLOBs
.
addElement
(
element
);
}
// update where
eleUpsertByExampleWithBLOBs
.
addElement
(
XmlElementGeneratorTools
.
getUpdateByExampleIncludeElement
(
introspectedTable
));
...
...
@@ -337,11 +342,10 @@ public class UpsertPlugin extends BasePlugin {
/**
* 当Model没有生成WithBLOBs类时的情况
*
* @param document
* @param introspectedTable
*/
private
void
generateXmlElementWithoutBLOBs
(
Document
document
,
IntrospectedTable
introspectedTable
){
private
void
generateXmlElementWithoutBLOBs
(
Document
document
,
IntrospectedTable
introspectedTable
)
{
// WithoutBLOBs也会存在只有一个时,不生成WithBLOBs对象的情况
boolean
flag
=
!
introspectedTable
.
getRules
().
generateRecordWithBLOBsClass
();
List
<
IntrospectedColumn
>
columns
=
flag
?
introspectedTable
.
getAllColumns
()
:
introspectedTable
.
getNonBLOBColumns
();
...
...
@@ -360,11 +364,17 @@ public class UpsertPlugin extends BasePlugin {
// insert
eleUpsert
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsert
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
columns
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateKeys
(
columns
))
{
eleUpsert
.
addElement
(
element
);
}
eleUpsert
.
addElement
(
new
TextElement
(
"values"
));
eleUpsert
.
addElement
(
XmlElementGeneratorTools
.
generateValues
(
columns
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateValues
(
columns
))
{
eleUpsert
.
addElement
(
element
);
}
eleUpsert
.
addElement
(
new
TextElement
(
"on duplicate key update "
));
eleUpsert
.
addElement
(
XmlElementGeneratorTools
.
generateSets
(
columns
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateSets
(
columns
))
{
eleUpsert
.
addElement
(
element
);
}
document
.
getRootElement
().
addElement
(
eleUpsert
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()
+
"增加upsert实现方法。"
);
...
...
@@ -392,7 +402,7 @@ public class UpsertPlugin extends BasePlugin {
document
.
getRootElement
().
addElement
(
eleUpsertSelective
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()
+
"增加upsertSelective实现方法。"
);
if
(
this
.
allowMultiQueries
){
if
(
this
.
allowMultiQueries
)
{
// ====================================== 2. upsertByExample ======================================
XmlElement
eleUpsertByExample
=
new
XmlElement
(
"insert"
);
eleUpsertByExample
.
addAttribute
(
new
Attribute
(
"id"
,
METHOD_UPSERT_BY_EXAMPLE
));
...
...
@@ -406,7 +416,9 @@ public class UpsertPlugin extends BasePlugin {
// insert
eleUpsertByExample
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsertByExample
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
columns
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateKeys
(
columns
))
{
eleUpsertByExample
.
addElement
(
element
);
}
this
.
generateExistsClause
(
introspectedTable
,
eleUpsertByExample
,
false
,
flag
);
// multiQueries
...
...
@@ -415,7 +427,9 @@ public class UpsertPlugin extends BasePlugin {
// update
eleUpsertByExample
.
addElement
(
new
TextElement
(
"update "
+
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
()));
eleUpsertByExample
.
addElement
(
new
TextElement
(
"set"
));
eleUpsertByExample
.
addElement
(
XmlElementGeneratorTools
.
generateSets
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
columns
),
"record."
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateSets
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
columns
),
"record."
))
{
eleUpsertByExample
.
addElement
(
element
);
}
// update where
eleUpsertByExample
.
addElement
(
XmlElementGeneratorTools
.
getUpdateByExampleIncludeElement
(
introspectedTable
));
...
...
@@ -456,20 +470,21 @@ public class UpsertPlugin extends BasePlugin {
/**
* exists 语句
*
* @param introspectedTable
* @param element
* @param selective
* @param allColumns
*/
private
void
generateExistsClause
(
IntrospectedTable
introspectedTable
,
XmlElement
element
,
boolean
selective
,
boolean
allColumns
){
private
void
generateExistsClause
(
IntrospectedTable
introspectedTable
,
XmlElement
element
,
boolean
selective
,
boolean
allColumns
)
{
List
<
IntrospectedColumn
>
columns
=
allColumns
?
introspectedTable
.
getAllColumns
()
:
introspectedTable
.
getNonBLOBColumns
();
element
.
addElement
(
new
TextElement
(
"select"
));
if
(
selective
){
if
(
selective
)
{
element
.
addElement
(
XmlElementGeneratorTools
.
generateValuesSelective
(
columns
,
"record."
,
false
));
}
else
{
element
.
addElement
(
XmlElementGeneratorTools
.
generateValues
(
columns
,
"record."
,
false
));
for
(
Element
element1
:
XmlElementGeneratorTools
.
generateValues
(
columns
,
"record."
,
false
))
{
element
.
addElement
(
element1
);
}
}
element
.
addElement
(
new
TextElement
(
"from dual where not exists"
));
element
.
addElement
(
new
TextElement
(
"("
));
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/utils/XmlElementGeneratorTools.java
View file @
fbecf4ce
...
...
@@ -18,6 +18,7 @@ package com.itfsw.mybatis.generator.plugins.utils;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.dom.OutputUtilities
;
import
org.mybatis.generator.api.dom.xml.Attribute
;
import
org.mybatis.generator.api.dom.xml.Element
;
import
org.mybatis.generator.api.dom.xml.TextElement
;
...
...
@@ -103,22 +104,20 @@ public class XmlElementGeneratorTools {
/**
* 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
*
* @param element
* @param introspectedTable
*/
public
static
void
useGeneratedKeys
(
XmlElement
element
,
IntrospectedTable
introspectedTable
){
public
static
void
useGeneratedKeys
(
XmlElement
element
,
IntrospectedTable
introspectedTable
)
{
useGeneratedKeys
(
element
,
introspectedTable
,
null
);
}
/**
* 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
*
* @param element
* @param introspectedTable
* @param prefix
*/
public
static
void
useGeneratedKeys
(
XmlElement
element
,
IntrospectedTable
introspectedTable
,
String
prefix
){
public
static
void
useGeneratedKeys
(
XmlElement
element
,
IntrospectedTable
introspectedTable
,
String
prefix
)
{
GeneratedKey
gk
=
introspectedTable
.
getGeneratedKey
();
if
(
gk
!=
null
)
{
IntrospectedColumn
introspectedColumn
=
introspectedTable
.
getColumn
(
gk
.
getColumn
());
...
...
@@ -138,7 +137,7 @@ public class XmlElementGeneratorTools {
* @param columns
* @return
*/
public
static
Element
generateKeys
(
List
<
IntrospectedColumn
>
columns
)
{
public
static
List
<
Element
>
generateKeys
(
List
<
IntrospectedColumn
>
columns
)
{
return
generateKeys
(
columns
,
true
);
}
...
...
@@ -148,7 +147,7 @@ public class XmlElementGeneratorTools {
* @param bracket
* @return
*/
public
static
Element
generateKeys
(
List
<
IntrospectedColumn
>
columns
,
boolean
bracket
)
{
public
static
List
<
Element
>
generateKeys
(
List
<
IntrospectedColumn
>
columns
,
boolean
bracket
)
{
return
generateCommColumns
(
columns
,
null
,
bracket
,
1
);
}
...
...
@@ -187,7 +186,7 @@ public class XmlElementGeneratorTools {
* @param columns
* @return
*/
public
static
Element
generateValues
(
List
<
IntrospectedColumn
>
columns
)
{
public
static
List
<
Element
>
generateValues
(
List
<
IntrospectedColumn
>
columns
)
{
return
generateValues
(
columns
,
null
);
}
...
...
@@ -197,7 +196,7 @@ public class XmlElementGeneratorTools {
* @param prefix
* @return
*/
public
static
Element
generateValues
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
)
{
public
static
List
<
Element
>
generateValues
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
)
{
return
generateValues
(
columns
,
prefix
,
true
);
}
...
...
@@ -208,7 +207,7 @@ public class XmlElementGeneratorTools {
* @param bracket
* @return
*/
public
static
Element
generateValues
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
)
{
public
static
List
<
Element
>
generateValues
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
)
{
return
generateCommColumns
(
columns
,
prefix
,
bracket
,
2
);
}
...
...
@@ -247,7 +246,7 @@ public class XmlElementGeneratorTools {
* @param columns
* @return
*/
public
static
Element
generateSets
(
List
<
IntrospectedColumn
>
columns
)
{
public
static
List
<
Element
>
generateSets
(
List
<
IntrospectedColumn
>
columns
)
{
return
generateSets
(
columns
,
null
,
false
);
}
...
...
@@ -257,7 +256,7 @@ public class XmlElementGeneratorTools {
* @param prefix
* @return
*/
public
static
Element
generateSets
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
)
{
public
static
List
<
Element
>
generateSets
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
)
{
return
generateSets
(
columns
,
prefix
,
false
);
}
...
...
@@ -268,7 +267,7 @@ public class XmlElementGeneratorTools {
* @param bracket
* @return
*/
public
static
Element
generateSets
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
)
{
public
static
List
<
Element
>
generateSets
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
)
{
return
generateCommColumns
(
columns
,
prefix
,
bracket
,
3
);
}
...
...
@@ -310,8 +309,9 @@ public class XmlElementGeneratorTools {
* @param type 1:key,2:value,3:set
* @return
*/
private
static
Element
generateCommColumns
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
,
int
type
)
{
StringBuffer
sb
=
new
StringBuffer
(
bracket
?
"("
:
""
);
private
static
List
<
Element
>
generateCommColumns
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
,
int
type
)
{
List
<
Element
>
list
=
new
ArrayList
<>();
StringBuilder
sb
=
new
StringBuilder
(
bracket
?
"("
:
""
);
Iterator
<
IntrospectedColumn
>
columnIterator
=
columns
.
iterator
();
while
(
columnIterator
.
hasNext
())
{
IntrospectedColumn
introspectedColumn
=
columnIterator
.
next
();
...
...
@@ -333,9 +333,24 @@ public class XmlElementGeneratorTools {
if
(
columnIterator
.
hasNext
())
{
sb
.
append
(
", "
);
}
// 保持和官方一致 80 进行换行
if
(
type
==
1
||
type
==
2
)
{
if
(
sb
.
length
()
>
80
)
{
list
.
add
(
new
TextElement
(
sb
.
toString
()));
sb
.
setLength
(
0
);
OutputUtilities
.
xmlIndent
(
sb
,
1
);
}
}
else
{
list
.
add
(
new
TextElement
(
sb
.
toString
()));
sb
.
setLength
(
0
);
}
}
if
(
sb
.
length
()
>
0
||
bracket
){
list
.
add
(
new
TextElement
(
sb
.
append
(
bracket
?
")"
:
""
).
toString
()));
}
return
new
TextElement
(
sb
.
append
(
bracket
?
")"
:
""
).
toString
())
;
return
list
;
}
/**
...
...
@@ -380,12 +395,11 @@ public class XmlElementGeneratorTools {
/**
* 查找指定xml节点下指定节点名称的元素
*
* @param xmlElement
* @param name
* @return
*/
public
static
List
<
XmlElement
>
findXmlElements
(
XmlElement
xmlElement
,
String
name
){
public
static
List
<
XmlElement
>
findXmlElements
(
XmlElement
xmlElement
,
String
name
)
{
List
<
XmlElement
>
list
=
new
ArrayList
<>();
List
<
Element
>
elements
=
xmlElement
.
getElements
();
for
(
Element
ele
:
elements
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment