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
1b151673
Commit
1b151673
authored
Apr 20, 2017
by
hewei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 代码精简;
2. 增加SelectiveEnhancedPlugin插件;
parent
fa2867dd
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
201 additions
and
56 deletions
+201
-56
src/main/java/com/itfsw/mybatis/generator/plugins/BatchInsertOldPlugin.java
...itfsw/mybatis/generator/plugins/BatchInsertOldPlugin.java
+3
-3
src/main/java/com/itfsw/mybatis/generator/plugins/BatchInsertPlugin.java
...om/itfsw/mybatis/generator/plugins/BatchInsertPlugin.java
+6
-26
src/main/java/com/itfsw/mybatis/generator/plugins/ModelColumnPlugin.java
...om/itfsw/mybatis/generator/plugins/ModelColumnPlugin.java
+5
-6
src/main/java/com/itfsw/mybatis/generator/plugins/SelectiveEnhancedPlugin.java
...sw/mybatis/generator/plugins/SelectiveEnhancedPlugin.java
+72
-0
src/main/java/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
...ava/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
+4
-5
src/main/java/com/itfsw/mybatis/generator/plugins/utils/PluginTools.java
...om/itfsw/mybatis/generator/plugins/utils/PluginTools.java
+63
-0
src/main/java/com/itfsw/mybatis/generator/plugins/utils/XmlElementGeneratorTools.java
...tis/generator/plugins/utils/XmlElementGeneratorTools.java
+48
-16
No files found.
src/main/java/com/itfsw/mybatis/generator/plugins/BatchInsertOldPlugin.java
View file @
1b151673
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
import
com.itfsw.mybatis.generator.plugins.utils.
Comm
Tools
;
import
com.itfsw.mybatis.generator.plugins.utils.
XmlElementGenerator
Tools
;
import
com.itfsw.mybatis.generator.plugins.utils.CommentTools
;
import
com.itfsw.mybatis.generator.plugins.utils.CommentTools
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.IntrospectedTable
;
...
@@ -171,7 +171,7 @@ public class BatchInsertOldPlugin extends PluginAdapter {
...
@@ -171,7 +171,7 @@ public class BatchInsertOldPlugin extends PluginAdapter {
CommentTools
.
addComment
(
element
);
CommentTools
.
addComment
(
element
);
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
element
,
introspectedTable
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
element
,
introspectedTable
);
// choose 节点
// choose 节点
XmlElement
choose
=
new
XmlElement
(
"choose"
);
XmlElement
choose
=
new
XmlElement
(
"choose"
);
...
@@ -246,7 +246,7 @@ public class BatchInsertOldPlugin extends PluginAdapter {
...
@@ -246,7 +246,7 @@ public class BatchInsertOldPlugin extends PluginAdapter {
CommentTools
.
addComment
(
element
);
CommentTools
.
addComment
(
element
);
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
element
,
introspectedTable
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
element
,
introspectedTable
);
// 普通插入语句
// 普通插入语句
this
.
addNormalBatchInsertXml
(
element
,
introspectedTable
);
this
.
addNormalBatchInsertXml
(
element
,
introspectedTable
);
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/BatchInsertPlugin.java
View file @
1b151673
...
@@ -16,8 +16,8 @@
...
@@ -16,8 +16,8 @@
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
import
com.itfsw.mybatis.generator.plugins.utils.CommTools
;
import
com.itfsw.mybatis.generator.plugins.utils.CommentTools
;
import
com.itfsw.mybatis.generator.plugins.utils.CommentTools
;
import
com.itfsw.mybatis.generator.plugins.utils.PluginTools
;
import
com.itfsw.mybatis.generator.plugins.utils.XmlElementGeneratorTools
;
import
com.itfsw.mybatis.generator.plugins.utils.XmlElementGeneratorTools
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.IntrospectedTable
;
...
@@ -29,8 +29,6 @@ import org.mybatis.generator.api.dom.xml.TextElement;
...
@@ -29,8 +29,6 @@ import org.mybatis.generator.api.dom.xml.TextElement;
import
org.mybatis.generator.api.dom.xml.XmlElement
;
import
org.mybatis.generator.api.dom.xml.XmlElement
;
import
org.mybatis.generator.codegen.mybatis3.ListUtilities
;
import
org.mybatis.generator.codegen.mybatis3.ListUtilities
;
import
org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities
;
import
org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities
;
import
org.mybatis.generator.config.Context
;
import
org.mybatis.generator.config.PluginConfiguration
;
import
org.mybatis.generator.internal.util.StringUtility
;
import
org.mybatis.generator.internal.util.StringUtility
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -71,27 +69,9 @@ public class BatchInsertPlugin extends PluginAdapter {
...
@@ -71,27 +69,9 @@ public class BatchInsertPlugin extends PluginAdapter {
// 插件使用前提是使用了ModelColumnPlugin插件
// 插件使用前提是使用了ModelColumnPlugin插件
try
{
if
(!
PluginTools
.
checkDependencyPlugin
(
ModelColumnPlugin
.
class
,
null
))
{
Context
ctx
=
getContext
();
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"插件需配合com.itfsw.mybatis.generator.plugins.ModelColumnPlugin插件使用!"
);
// 利用反射获取pluginConfigurations属性
return
false
;
java
.
lang
.
reflect
.
Field
field
=
Context
.
class
.
getDeclaredField
(
"pluginConfigurations"
);
field
.
setAccessible
(
true
);
List
<
PluginConfiguration
>
list
=
(
List
<
PluginConfiguration
>)
field
.
get
(
ctx
);
// 检查是否配置了ModelColumnPlugin插件
boolean
unFind
=
true
;
for
(
PluginConfiguration
config:
list
)
{
if
(
ModelColumnPlugin
.
class
.
getName
().
equals
(
config
.
getConfigurationType
())){
unFind
=
false
;
}
}
// 建议使用ModelColumnPlugin插件
if
(
unFind
){
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"插件需配合com.itfsw.mybatis.generator.plugins.ModelColumnPlugin插件使用!"
);
return
false
;
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getLocalizedMessage
());
}
}
// TODO
// TODO
...
@@ -161,7 +141,7 @@ public class BatchInsertPlugin extends PluginAdapter {
...
@@ -161,7 +141,7 @@ public class BatchInsertPlugin extends PluginAdapter {
CommentTools
.
addComment
(
batchInsertEle
);
CommentTools
.
addComment
(
batchInsertEle
);
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
batchInsertEle
,
introspectedTable
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
batchInsertEle
,
introspectedTable
);
batchInsertEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
batchInsertEle
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
batchInsertEle
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
())));
batchInsertEle
.
addElement
(
XmlElementGeneratorTools
.
generateKeys
(
ListUtilities
.
removeIdentityAndGeneratedAlwaysColumns
(
introspectedTable
.
getAllColumns
())));
...
@@ -192,7 +172,7 @@ public class BatchInsertPlugin extends PluginAdapter {
...
@@ -192,7 +172,7 @@ public class BatchInsertPlugin extends PluginAdapter {
CommentTools
.
addComment
(
element
);
CommentTools
.
addComment
(
element
);
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
element
,
introspectedTable
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
element
,
introspectedTable
);
element
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()+
" ("
));
element
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()+
" ("
));
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/ModelColumnPlugin.java
View file @
1b151673
...
@@ -36,7 +36,7 @@ import java.util.List;
...
@@ -36,7 +36,7 @@ import java.util.List;
* @time:2017/1/17 11:20
* @time:2017/1/17 11:20
* ---------------------------------------------------------------------------
* ---------------------------------------------------------------------------
*/
*/
public
class
ModelColumnPlugin
extends
PluginAdapter
{
public
class
ModelColumnPlugin
extends
PluginAdapter
{
public
static
final
String
ENUM_NAME
=
"Column"
;
// 内部Enum名
public
static
final
String
ENUM_NAME
=
"Column"
;
// 内部Enum名
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ModelColumnPlugin
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ModelColumnPlugin
.
class
);
...
@@ -46,8 +46,8 @@ public class ModelColumnPlugin extends PluginAdapter {
...
@@ -46,8 +46,8 @@ public class ModelColumnPlugin extends PluginAdapter {
@Override
@Override
public
boolean
validate
(
List
<
String
>
warnings
)
{
public
boolean
validate
(
List
<
String
>
warnings
)
{
// 插件使用前提是targetRuntime为MyBatis3
// 插件使用前提是targetRuntime为MyBatis3
if
(
StringUtility
.
stringHasValue
(
getContext
().
getTargetRuntime
())
&&
"MyBatis3"
.
equalsIgnoreCase
(
getContext
().
getTargetRuntime
())
==
false
)
{
if
(
StringUtility
.
stringHasValue
(
getContext
().
getTargetRuntime
())
&&
"MyBatis3"
.
equalsIgnoreCase
(
getContext
().
getTargetRuntime
())
==
false
)
{
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()+
"要求运行targetRuntime必须为MyBatis3!"
);
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"要求运行targetRuntime必须为MyBatis3!"
);
return
false
;
return
false
;
}
}
return
true
;
return
true
;
...
@@ -56,7 +56,6 @@ public class ModelColumnPlugin extends PluginAdapter {
...
@@ -56,7 +56,6 @@ public class ModelColumnPlugin extends PluginAdapter {
/**
/**
* Model Methods 生成
* Model Methods 生成
* 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
* 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
*
* @param topLevelClass
* @param topLevelClass
* @param introspectedTable
* @param introspectedTable
* @return
* @return
...
@@ -70,7 +69,7 @@ public class ModelColumnPlugin extends PluginAdapter {
...
@@ -70,7 +69,7 @@ public class ModelColumnPlugin extends PluginAdapter {
innerEnum
.
setVisibility
(
JavaVisibility
.
PUBLIC
);
innerEnum
.
setVisibility
(
JavaVisibility
.
PUBLIC
);
innerEnum
.
setStatic
(
true
);
innerEnum
.
setStatic
(
true
);
CommentTools
.
addInnerEnumComment
(
innerEnum
,
introspectedTable
);
CommentTools
.
addInnerEnumComment
(
innerEnum
,
introspectedTable
);
logger
.
debug
(
"itfsw(数据Model属性对应Column获取插件):"
+
topLevelClass
.
getType
().
getShortName
()+
"增加内部Builder类。"
);
logger
.
debug
(
"itfsw(数据Model属性对应Column获取插件):"
+
topLevelClass
.
getType
().
getShortName
()
+
"增加内部Builder类。"
);
// 生成属性和构造函数
// 生成属性和构造函数
Field
columnField
=
new
Field
(
"column"
,
FullyQualifiedJavaType
.
getStringInstance
());
Field
columnField
=
new
Field
(
"column"
,
FullyQualifiedJavaType
.
getStringInstance
());
...
@@ -99,7 +98,7 @@ public class ModelColumnPlugin extends PluginAdapter {
...
@@ -99,7 +98,7 @@ public class ModelColumnPlugin extends PluginAdapter {
constructor
.
addParameter
(
new
Parameter
(
FullyQualifiedJavaType
.
getStringInstance
(),
"column"
));
constructor
.
addParameter
(
new
Parameter
(
FullyQualifiedJavaType
.
getStringInstance
(),
"column"
));
CommentTools
.
addGeneralMethodComment
(
constructor
,
introspectedTable
);
CommentTools
.
addGeneralMethodComment
(
constructor
,
introspectedTable
);
innerEnum
.
addMethod
(
constructor
);
innerEnum
.
addMethod
(
constructor
);
logger
.
debug
(
"itfsw(数据Model属性对应Column获取插件):"
+
topLevelClass
.
getType
().
getShortName
()+
".Column增加构造方法和column属性。"
);
logger
.
debug
(
"itfsw(数据Model属性对应Column获取插件):"
+
topLevelClass
.
getType
().
getShortName
()
+
".Column增加构造方法和column属性。"
);
// Enum枚举
// Enum枚举
for
(
IntrospectedColumn
introspectedColumn
:
introspectedTable
.
getAllColumns
())
{
for
(
IntrospectedColumn
introspectedColumn
:
introspectedTable
.
getAllColumns
())
{
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/
utils/CommTools
.java
→
src/main/java/com/itfsw/mybatis/generator/plugins/
SelectiveEnhancedPlugin
.java
View file @
1b151673
...
@@ -14,53 +14,59 @@
...
@@ -14,53 +14,59 @@
* limitations under the License.
* limitations under the License.
*/
*/
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
.
utils
;
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
import
org.mybatis.generator.api.IntrospectedColumn
;
import
com.itfsw.mybatis.generator.plugins.utils.PluginTools
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.dom.xml.Attribute
;
import
org.mybatis.generator.api.PluginAdapter
;
import
org.mybatis.generator.api.dom.xml.XmlElement
;
import
org.mybatis.generator.api.dom.java.TopLevelClass
;
import
org.mybatis.generator.config.GeneratedKey
;
import
org.mybatis.generator.internal.util.StringUtility
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.List
;
/**
/**
* ---------------------------------------------------------------------------
* ---------------------------------------------------------------------------
*
一些通用工具集
*
Selective 增强插件
* ---------------------------------------------------------------------------
* ---------------------------------------------------------------------------
* @author: hewei
* @author: hewei
* @time:2017/
3/22 14:03
* @time:2017/
4/20 15:39
* ---------------------------------------------------------------------------
* ---------------------------------------------------------------------------
*/
*/
public
class
CommTools
{
public
class
SelectiveEnhancedPlugin
extends
PluginAdapter
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SelectiveEnhancedPlugin
.
class
);
/**
/**
* 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
* {@inheritDoc}
*
* @param element
* @param introspectedTable
*/
*/
public
static
void
useGeneratedKeys
(
XmlElement
element
,
IntrospectedTable
introspectedTable
){
@Override
useGeneratedKeys
(
element
,
introspectedTable
,
null
);
public
boolean
validate
(
List
<
String
>
warnings
)
{
// 插件使用前提是targetRuntime为MyBatis3
if
(
StringUtility
.
stringHasValue
(
getContext
().
getTargetRuntime
())
&&
"MyBatis3"
.
equalsIgnoreCase
(
getContext
().
getTargetRuntime
())
==
false
)
{
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"要求运行targetRuntime必须为MyBatis3!"
);
return
false
;
}
// 插件使用前提是使用了ModelColumnPlugin插件
if
(!
PluginTools
.
checkDependencyPlugin
(
ModelColumnPlugin
.
class
,
null
))
{
logger
.
warn
(
"itfsw:插件"
+
this
.
getClass
().
getTypeName
()
+
"插件需配合com.itfsw.mybatis.generator.plugins.ModelColumnPlugin插件使用!"
);
return
false
;
}
return
true
;
}
}
/**
/**
*
使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
*
Model Methods 生成
*
*
具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
* @param
element
* @param
topLevelClass
* @param introspectedTable
* @param introspectedTable
* @
param prefix
* @
return
*/
*/
public
static
void
useGeneratedKeys
(
XmlElement
element
,
IntrospectedTable
introspectedTable
,
String
prefix
){
@Override
GeneratedKey
gk
=
introspectedTable
.
getGeneratedKey
();
public
boolean
modelBaseRecordClassGenerated
(
TopLevelClass
topLevelClass
,
IntrospectedTable
introspectedTable
)
{
if
(
gk
!=
null
)
{
IntrospectedColumn
introspectedColumn
=
introspectedTable
.
getColumn
(
gk
.
getColumn
());
return
true
;
// if the column is null, then it's a configuration error. The
// warning has already been reported
if
(
introspectedColumn
!=
null
)
{
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
element
.
addAttribute
(
new
Attribute
(
"useGeneratedKeys"
,
"true"
));
//$NON-NLS-1$ //$NON-NLS-2$
element
.
addAttribute
(
new
Attribute
(
"keyProperty"
,
(
prefix
==
null
?
""
:
prefix
)
+
introspectedColumn
.
getJavaProperty
()));
//$NON-NLS-1$
element
.
addAttribute
(
new
Attribute
(
"keyColumn"
,
introspectedColumn
.
getActualColumnName
()));
//$NON-NLS-1$
}
}
}
}
}
}
src/main/java/com/itfsw/mybatis/generator/plugins/UpsertPlugin.java
View file @
1b151673
...
@@ -16,7 +16,6 @@
...
@@ -16,7 +16,6 @@
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
;
import
com.itfsw.mybatis.generator.plugins.utils.CommTools
;
import
com.itfsw.mybatis.generator.plugins.utils.CommentTools
;
import
com.itfsw.mybatis.generator.plugins.utils.CommentTools
;
import
com.itfsw.mybatis.generator.plugins.utils.XmlElementGeneratorTools
;
import
com.itfsw.mybatis.generator.plugins.utils.XmlElementGeneratorTools
;
import
org.mybatis.generator.api.IntrospectedTable
;
import
org.mybatis.generator.api.IntrospectedTable
;
...
@@ -168,7 +167,7 @@ public class UpsertPlugin extends PluginAdapter {
...
@@ -168,7 +167,7 @@ public class UpsertPlugin extends PluginAdapter {
eleUpsert
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getRules
().
calculateAllFieldsClass
().
getFullyQualifiedName
()));
eleUpsert
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getRules
().
calculateAllFieldsClass
().
getFullyQualifiedName
()));
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
eleUpsert
,
introspectedTable
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
eleUpsert
,
introspectedTable
);
// insert
// insert
eleUpsert
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsert
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
...
@@ -191,7 +190,7 @@ public class UpsertPlugin extends PluginAdapter {
...
@@ -191,7 +190,7 @@ public class UpsertPlugin extends PluginAdapter {
eleUpsertSelective
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getRules
().
calculateAllFieldsClass
().
getFullyQualifiedName
()));
eleUpsertSelective
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getRules
().
calculateAllFieldsClass
().
getFullyQualifiedName
()));
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
eleUpsertSelective
,
introspectedTable
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
eleUpsertSelective
,
introspectedTable
);
// insert
// insert
eleUpsertSelective
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsertSelective
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
...
@@ -214,7 +213,7 @@ public class UpsertPlugin extends PluginAdapter {
...
@@ -214,7 +213,7 @@ public class UpsertPlugin extends PluginAdapter {
CommentTools
.
addComment
(
eleUpsertByExample
);
CommentTools
.
addComment
(
eleUpsertByExample
);
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
eleUpsertByExample
,
introspectedTable
,
"record."
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
eleUpsertByExample
,
introspectedTable
,
"record."
);
// insert
// insert
eleUpsertByExample
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsertByExample
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
...
@@ -243,7 +242,7 @@ public class UpsertPlugin extends PluginAdapter {
...
@@ -243,7 +242,7 @@ public class UpsertPlugin extends PluginAdapter {
CommentTools
.
addComment
(
eleUpsertByExampleSelective
);
CommentTools
.
addComment
(
eleUpsertByExampleSelective
);
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
Comm
Tools
.
useGeneratedKeys
(
eleUpsertByExampleSelective
,
introspectedTable
,
"record."
);
XmlElementGenerator
Tools
.
useGeneratedKeys
(
eleUpsertByExampleSelective
,
introspectedTable
,
"record."
);
// insert
// insert
eleUpsertByExampleSelective
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
eleUpsertByExampleSelective
.
addElement
(
new
TextElement
(
"insert into "
+
introspectedTable
.
getFullyQualifiedTableNameAtRuntime
()));
...
...
src/main/java/com/itfsw/mybatis/generator/plugins/utils/PluginTools.java
0 → 100644
View file @
1b151673
/*
* Copyright (c) 2017.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
itfsw
.
mybatis
.
generator
.
plugins
.
utils
;
import
org.mybatis.generator.config.Context
;
import
org.mybatis.generator.config.PluginConfiguration
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.lang.reflect.Field
;
import
java.util.List
;
/**
* ---------------------------------------------------------------------------
* 插件工具集
* ---------------------------------------------------------------------------
* @author: hewei
* @time:2017/4/20 15:43
* ---------------------------------------------------------------------------
*/
public
class
PluginTools
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PluginTools
.
class
);
/**
* 检查插件依赖
*
* @param plugin 插件
* @param ctx 上下文
* @return
*/
public
static
boolean
checkDependencyPlugin
(
Class
plugin
,
Context
ctx
){
try
{
// 利用反射获取pluginConfigurations属性
Field
field
=
Context
.
class
.
getDeclaredField
(
"pluginConfigurations"
);
field
.
setAccessible
(
true
);
List
<
PluginConfiguration
>
list
=
(
List
<
PluginConfiguration
>)
field
.
get
(
ctx
);
// 检查是否配置了ModelColumnPlugin插件
for
(
PluginConfiguration
config:
list
)
{
if
(
plugin
.
getName
().
equals
(
config
.
getConfigurationType
())){
return
true
;
}
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"插件检查反射异常"
,
e
);
}
return
false
;
}
}
src/main/java/com/itfsw/mybatis/generator/plugins/utils/XmlElementGeneratorTools.java
View file @
1b151673
...
@@ -49,11 +49,11 @@ public class XmlElementGeneratorTools {
...
@@ -49,11 +49,11 @@ public class XmlElementGeneratorTools {
String
identityColumnType
=
introspectedColumn
String
identityColumnType
=
introspectedColumn
.
getFullyQualifiedJavaType
().
getFullyQualifiedName
();
.
getFullyQualifiedJavaType
().
getFullyQualifiedName
();
XmlElement
answer
=
new
XmlElement
(
"selectKey"
);
//$NON-NLS-1$
XmlElement
answer
=
new
XmlElement
(
"selectKey"
);
answer
.
addAttribute
(
new
Attribute
(
"resultType"
,
identityColumnType
));
//$NON-NLS-1$
answer
.
addAttribute
(
new
Attribute
(
"resultType"
,
identityColumnType
));
answer
.
addAttribute
(
new
Attribute
(
answer
.
addAttribute
(
new
Attribute
(
"keyProperty"
,
introspectedColumn
.
getJavaProperty
()));
//$NON-NLS-1$
"keyProperty"
,
introspectedColumn
.
getJavaProperty
()));
answer
.
addAttribute
(
new
Attribute
(
"order"
,
//$NON-NLS-1$
answer
.
addAttribute
(
new
Attribute
(
"order"
,
generatedKey
.
getMyBatis3Order
()));
generatedKey
.
getMyBatis3Order
()));
answer
.
addElement
(
new
TextElement
(
generatedKey
answer
.
addElement
(
new
TextElement
(
generatedKey
...
@@ -63,25 +63,25 @@ public class XmlElementGeneratorTools {
...
@@ -63,25 +63,25 @@ public class XmlElementGeneratorTools {
}
}
public
static
Element
getBaseColumnListElement
(
IntrospectedTable
introspectedTable
)
{
public
static
Element
getBaseColumnListElement
(
IntrospectedTable
introspectedTable
)
{
XmlElement
answer
=
new
XmlElement
(
"include"
);
//$NON-NLS-1$
XmlElement
answer
=
new
XmlElement
(
"include"
);
answer
.
addAttribute
(
new
Attribute
(
"refid"
,
//$NON-NLS-1$
answer
.
addAttribute
(
new
Attribute
(
"refid"
,
introspectedTable
.
getBaseColumnListId
()));
introspectedTable
.
getBaseColumnListId
()));
return
answer
;
return
answer
;
}
}
public
static
Element
getBlobColumnListElement
(
IntrospectedTable
introspectedTable
)
{
public
static
Element
getBlobColumnListElement
(
IntrospectedTable
introspectedTable
)
{
XmlElement
answer
=
new
XmlElement
(
"include"
);
//$NON-NLS-1$
XmlElement
answer
=
new
XmlElement
(
"include"
);
answer
.
addAttribute
(
new
Attribute
(
"refid"
,
//$NON-NLS-1$
answer
.
addAttribute
(
new
Attribute
(
"refid"
,
introspectedTable
.
getBlobColumnListId
()));
introspectedTable
.
getBlobColumnListId
()));
return
answer
;
return
answer
;
}
}
public
static
Element
getExampleIncludeElement
(
IntrospectedTable
introspectedTable
)
{
public
static
Element
getExampleIncludeElement
(
IntrospectedTable
introspectedTable
)
{
XmlElement
ifElement
=
new
XmlElement
(
"if"
);
//$NON-NLS-1$
XmlElement
ifElement
=
new
XmlElement
(
"if"
);
ifElement
.
addAttribute
(
new
Attribute
(
"test"
,
"_parameter != null"
));
//$NON-NLS-1$ //$NON-NLS-2$
ifElement
.
addAttribute
(
new
Attribute
(
"test"
,
"_parameter != null"
));
XmlElement
includeElement
=
new
XmlElement
(
"include"
);
//$NON-NLS-1$
XmlElement
includeElement
=
new
XmlElement
(
"include"
);
includeElement
.
addAttribute
(
new
Attribute
(
"refid"
,
//$NON-NLS-1$
includeElement
.
addAttribute
(
new
Attribute
(
"refid"
,
introspectedTable
.
getExampleWhereClauseId
()));
introspectedTable
.
getExampleWhereClauseId
()));
ifElement
.
addElement
(
includeElement
);
ifElement
.
addElement
(
includeElement
);
...
@@ -89,17 +89,49 @@ public class XmlElementGeneratorTools {
...
@@ -89,17 +89,49 @@ public class XmlElementGeneratorTools {
}
}
public
static
Element
getUpdateByExampleIncludeElement
(
IntrospectedTable
introspectedTable
)
{
public
static
Element
getUpdateByExampleIncludeElement
(
IntrospectedTable
introspectedTable
)
{
XmlElement
ifElement
=
new
XmlElement
(
"if"
);
//$NON-NLS-1$
XmlElement
ifElement
=
new
XmlElement
(
"if"
);
ifElement
.
addAttribute
(
new
Attribute
(
"test"
,
"_parameter != null"
));
//$NON-NLS-1$ //$NON-NLS-2$
ifElement
.
addAttribute
(
new
Attribute
(
"test"
,
"_parameter != null"
));
XmlElement
includeElement
=
new
XmlElement
(
"include"
);
//$NON-NLS-1$
XmlElement
includeElement
=
new
XmlElement
(
"include"
);
includeElement
.
addAttribute
(
new
Attribute
(
"refid"
,
//$NON-NLS-1$
includeElement
.
addAttribute
(
new
Attribute
(
"refid"
,
introspectedTable
.
getMyBatis3UpdateByExampleWhereClauseId
()));
introspectedTable
.
getMyBatis3UpdateByExampleWhereClauseId
()));
ifElement
.
addElement
(
includeElement
);
ifElement
.
addElement
(
includeElement
);
return
ifElement
;
return
ifElement
;
}
}
/**
* 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
*
* @param element
* @param 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
){
GeneratedKey
gk
=
introspectedTable
.
getGeneratedKey
();
if
(
gk
!=
null
)
{
IntrospectedColumn
introspectedColumn
=
introspectedTable
.
getColumn
(
gk
.
getColumn
());
// if the column is null, then it's a configuration error. The
// warning has already been reported
if
(
introspectedColumn
!=
null
)
{
// 使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。所以只支持MYSQL和SQLServer
element
.
addAttribute
(
new
Attribute
(
"useGeneratedKeys"
,
"true"
));
element
.
addAttribute
(
new
Attribute
(
"keyProperty"
,
(
prefix
==
null
?
""
:
prefix
)
+
introspectedColumn
.
getJavaProperty
()));
element
.
addAttribute
(
new
Attribute
(
"keyColumn"
,
introspectedColumn
.
getActualColumnName
()));
}
}
}
/**
/**
* 生成keys Ele
* 生成keys Ele
* @param columns
* @param columns
...
...
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