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
01f5e51b
Commit
01f5e51b
authored
May 04, 2018
by
hewei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
upsert 插件key,value,set启用单独方法,防止和别的插件冲突
parent
e8c4641f
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
14 deletions
+71
-14
src/main/java/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
...ava/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
+6
-6
src/main/java/com/itfsw/mybatis/generator/plugins/utils/IntrospectedTableTools.java
...batis/generator/plugins/utils/IntrospectedTableTools.java
+17
-4
src/main/java/com/itfsw/mybatis/generator/plugins/utils/XmlElementGeneratorTools.java
...tis/generator/plugins/utils/XmlElementGeneratorTools.java
+45
-1
src/main/java/com/itfsw/mybatis/generator/plugins/utils/enhanced/InnerTypeFullyQualifiedJavaType.java
...ugins/utils/enhanced/InnerTypeFullyQualifiedJavaType.java
+3
-3
No files found.
src/main/java/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
View file @
01f5e51b
...
@@ -304,16 +304,16 @@ public class UpsertPlugin extends BasePlugin {
...
@@ -304,16 +304,16 @@ public class UpsertPlugin extends BasePlugin {
// insert
// insert
insertEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
insertEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
for
(
Element
element
:
XmlElementGeneratorTools
.
generate
Keys
(
columns
))
{
for
(
Element
element
:
XmlElementGeneratorTools
.
generate
UpsertKeys
(
columns
,
null
))
{
insertEle
.
addElement
(
element
);
insertEle
.
addElement
(
element
);
}
}
insertEle
.
addElement
(
new
TextElement
(
"values"
));
insertEle
.
addElement
(
new
TextElement
(
"values"
));
for
(
Element
element
:
XmlElementGeneratorTools
.
generate
Values
(
columns
))
{
for
(
Element
element
:
XmlElementGeneratorTools
.
generate
UpsertValues
(
columns
,
null
,
true
))
{
insertEle
.
addElement
(
element
);
insertEle
.
addElement
(
element
);
}
}
insertEle
.
addElement
(
new
TextElement
(
"on duplicate key update "
));
insertEle
.
addElement
(
new
TextElement
(
"on duplicate key update "
));
// set
// set
for
(
Element
set
:
XmlElementGeneratorTools
.
generate
Sets
(
columns
))
{
for
(
Element
set
:
XmlElementGeneratorTools
.
generate
UpsertSets
(
columns
,
null
))
{
insertEle
.
addElement
(
set
);
insertEle
.
addElement
(
set
);
}
}
...
@@ -337,7 +337,7 @@ public class UpsertPlugin extends BasePlugin {
...
@@ -337,7 +337,7 @@ public class UpsertPlugin extends BasePlugin {
updateEle
.
addElement
(
new
TextElement
(
"update "
+
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
()));
updateEle
.
addElement
(
new
TextElement
(
"update "
+
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
()));
updateEle
.
addElement
(
new
TextElement
(
"set"
));
updateEle
.
addElement
(
new
TextElement
(
"set"
));
// set
// set
for
(
Element
set
:
XmlElementGeneratorTools
.
generateSets
(
columns
,
"record."
))
{
for
(
Element
set
:
XmlElementGeneratorTools
.
generate
Upsert
Sets
(
columns
,
"record."
))
{
updateEle
.
addElement
(
set
);
updateEle
.
addElement
(
set
);
}
}
...
@@ -349,10 +349,10 @@ public class UpsertPlugin extends BasePlugin {
...
@@ -349,10 +349,10 @@ public class UpsertPlugin extends BasePlugin {
// insert
// insert
updateEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
updateEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
for
(
Element
element
:
XmlElementGeneratorTools
.
generateKeys
(
columns
,
"record."
))
{
for
(
Element
element
:
XmlElementGeneratorTools
.
generate
Upsert
Keys
(
columns
,
"record."
))
{
updateEle
.
addElement
(
element
);
updateEle
.
addElement
(
element
);
}
}
this
.
generateExistsClause
(
introspectedTable
,
updateEle
,
XmlElementGeneratorTools
.
generateValues
(
columns
,
"record."
,
false
));
this
.
generateExistsClause
(
introspectedTable
,
updateEle
,
XmlElementGeneratorTools
.
generate
Upsert
Values
(
columns
,
"record."
,
false
));
document
.
getRootElement
().
addElement
(
updateEle
);
document
.
getRootElement
().
addElement
(
updateEle
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()
+
"增加upsertByExample实现方法。"
);
logger
.
debug
(
"itfsw(存在即更新插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()
+
"增加upsertByExample实现方法。"
);
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/utils/IntrospectedTableTools.java
View file @
01f5e51b
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
.
utils
;
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
.
utils
;
import
com.itfsw.mybatis.generator.plugins.ExampleTargetPlugin
;
import
com.itfsw.mybatis.generator.plugins.ExampleTargetPlugin
;
import
org.mybatis.generator.api.FullyQualifiedTable
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.config.Context
;
import
org.mybatis.generator.config.Context
;
...
@@ -24,7 +25,9 @@ import org.mybatis.generator.config.JavaModelGeneratorConfiguration;
...
@@ -24,7 +25,9 @@ import org.mybatis.generator.config.JavaModelGeneratorConfiguration;
import
org.mybatis.generator.config.PluginConfiguration
;
import
org.mybatis.generator.config.PluginConfiguration
;
import
org.mybatis.generator.internal.util.StringUtility
;
import
org.mybatis.generator.internal.util.StringUtility
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
/**
/**
* ---------------------------------------------------------------------------
* ---------------------------------------------------------------------------
...
@@ -49,12 +52,22 @@ public class IntrospectedTableTools {
...
@@ -49,12 +52,22 @@ public class IntrospectedTableTools {
introspectedTable
.
getTableConfiguration
().
setDomainObjectName
(
domainObjectName
);
introspectedTable
.
getTableConfiguration
().
setDomainObjectName
(
domainObjectName
);
// FullyQualifiedTable修正
// FullyQualifiedTable修正
BeanUtils
.
setProperty
(
introspectedTable
.
getFullyQualifiedTable
(),
"domainObjectName"
,
domainObjectName
);
Field
domainObjectNameField
=
FullyQualifiedTable
.
class
.
getDeclaredField
(
"domainObjectName"
);
domainObjectNameField
.
setAccessible
(
true
);
domainObjectNameField
.
set
(
introspectedTable
.
getFullyQualifiedTable
(),
domainObjectName
);
// 重新修正introspectedTable属性信息
// 重新修正introspectedTable属性信息
BeanUtils
.
invoke
(
introspectedTable
,
"calculateJavaClientAttributes"
);
Method
calculateJavaClientAttributes
=
IntrospectedTable
.
class
.
getDeclaredMethod
(
"calculateJavaClientAttributes"
);
BeanUtils
.
invoke
(
introspectedTable
,
"calculateModelAttributes"
);
calculateJavaClientAttributes
.
setAccessible
(
true
);
BeanUtils
.
invoke
(
introspectedTable
,
"calculateXmlAttributes"
);
calculateJavaClientAttributes
.
invoke
(
introspectedTable
);
Method
calculateModelAttributes
=
IntrospectedTable
.
class
.
getDeclaredMethod
(
"calculateModelAttributes"
);
calculateModelAttributes
.
setAccessible
(
true
);
calculateModelAttributes
.
invoke
(
introspectedTable
);
Method
calculateXmlAttributes
=
IntrospectedTable
.
class
.
getDeclaredMethod
(
"calculateXmlAttributes"
);
calculateXmlAttributes
.
setAccessible
(
true
);
calculateXmlAttributes
.
invoke
(
introspectedTable
);
// 注意!! 如果配置了ExampleTargetPlugin插件,要修正Example 位置
// 注意!! 如果配置了ExampleTargetPlugin插件,要修正Example 位置
PluginConfiguration
configuration
=
PluginTools
.
getPluginConfiguration
(
context
,
ExampleTargetPlugin
.
class
);
PluginConfiguration
configuration
=
PluginTools
.
getPluginConfiguration
(
context
,
ExampleTargetPlugin
.
class
);
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/utils/XmlElementGeneratorTools.java
View file @
01f5e51b
...
@@ -284,6 +284,37 @@ public class XmlElementGeneratorTools {
...
@@ -284,6 +284,37 @@ public class XmlElementGeneratorTools {
return
generateCommColumnsSelective
(
columns
,
prefix
,
false
,
3
);
return
generateCommColumnsSelective
(
columns
,
prefix
,
false
,
3
);
}
}
/**
* 生成keys Ele (upsert)
* @param columns
* @param prefix
* @return
*/
public
static
List
<
Element
>
generateUpsertKeys
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
)
{
return
generateCommColumns
(
columns
,
prefix
,
true
,
1
,
true
);
}
/**
* 生成values Ele (upsert)
* @param columns
* @param prefix
* @param bracket
* @return
*/
public
static
List
<
Element
>
generateUpsertValues
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
)
{
return
generateCommColumns
(
columns
,
prefix
,
bracket
,
2
,
true
);
}
/**
* 生成sets Ele (upsert)
* @param columns
* @param prefix
* @return
*/
public
static
List
<
Element
>
generateUpsertSets
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
)
{
return
generateCommColumns
(
columns
,
prefix
,
false
,
3
,
true
);
}
/**
/**
* 通用遍历columns
* 通用遍历columns
* @param columns
* @param columns
...
@@ -293,10 +324,23 @@ public class XmlElementGeneratorTools {
...
@@ -293,10 +324,23 @@ public class XmlElementGeneratorTools {
* @return
* @return
*/
*/
private
static
List
<
Element
>
generateCommColumns
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
,
int
type
)
{
private
static
List
<
Element
>
generateCommColumns
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
,
int
type
)
{
return
generateCommColumns
(
columns
,
prefix
,
bracket
,
type
,
false
);
}
/**
* 通用遍历columns
* @param columns
* @param prefix
* @param bracket
* @param type 1:key,2:value,3:set
* @param upsert
* @return
*/
private
static
List
<
Element
>
generateCommColumns
(
List
<
IntrospectedColumn
>
columns
,
String
prefix
,
boolean
bracket
,
int
type
,
boolean
upsert
)
{
List
<
Element
>
list
=
new
ArrayList
<>();
List
<
Element
>
list
=
new
ArrayList
<>();
// 只有upsert插件才会传入 IdentityAndGeneratedAlwaysColumn
// 只有upsert插件才会传入 IdentityAndGeneratedAlwaysColumn
if
(
hasIdentityAndGeneratedAlwaysColumns
(
columns
))
{
if
(
upsert
&&
hasIdentityAndGeneratedAlwaysColumns
(
columns
))
{
XmlElement
trimEle
=
generateTrim
(
bracket
);
XmlElement
trimEle
=
generateTrim
(
bracket
);
for
(
IntrospectedColumn
introspectedColumn
:
columns
)
{
for
(
IntrospectedColumn
introspectedColumn
:
columns
)
{
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/utils/enhanced/InnerTypeFullyQualifiedJavaType.java
View file @
01f5e51b
...
@@ -16,7 +16,6 @@
...
@@ -16,7 +16,6 @@
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
.
utils
.
enhanced
;
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
.
utils
.
enhanced
;
import
com.itfsw.mybatis.generator.plugins.utils.BeanUtils
;
import
org.mybatis.generator.api.dom.java.FullyQualifiedJavaType
;
import
org.mybatis.generator.api.dom.java.FullyQualifiedJavaType
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -41,9 +40,10 @@ public class InnerTypeFullyQualifiedJavaType extends FullyQualifiedJavaType {
...
@@ -41,9 +40,10 @@ public class InnerTypeFullyQualifiedJavaType extends FullyQualifiedJavaType {
try
{
try
{
// 修正package
// 修正package
java
.
lang
.
reflect
.
Field
packageName
=
this
.
getClass
().
getSuperclass
().
getDeclaredField
(
"packageName"
);
packageName
.
setAccessible
(
true
);
String
oldPackageName
=
getPackageName
();
String
oldPackageName
=
getPackageName
();
packageName
.
set
(
this
,
oldPackageName
.
substring
(
0
,
oldPackageName
.
lastIndexOf
(
"."
)));
BeanUtils
.
setProperty
(
this
,
"packageName"
,
oldPackageName
.
substring
(
0
,
oldPackageName
.
lastIndexOf
(
"."
)));
outerType
=
oldPackageName
.
substring
(
oldPackageName
.
lastIndexOf
(
"."
)
+
1
);
outerType
=
oldPackageName
.
substring
(
oldPackageName
.
lastIndexOf
(
"."
)
+
1
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
...
...
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