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
1f5e57dc
Commit
1f5e57dc
authored
May 17, 2017
by
hewei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对于Model生成WithBLOBs类时,SelectOneByExample插件实现行为和官方插件保持一致
parent
9b500d99
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
80 additions
and
54 deletions
+80
-54
src/main/java/com/itfsw/mybatis/generator/plugins/SelectOneByExamplePlugin.java
...w/mybatis/generator/plugins/SelectOneByExamplePlugin.java
+80
-54
No files found.
src/main/java/com/itfsw/mybatis/generator/plugins/SelectOneByExamplePlugin.java
View file @
1f5e57dc
...
@@ -38,6 +38,7 @@ import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
...
@@ -38,6 +38,7 @@ import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
*/
*/
public
class
SelectOneByExamplePlugin
extends
BasePlugin
{
public
class
SelectOneByExamplePlugin
extends
BasePlugin
{
public
static
final
String
METHOD_SELECT_ONE_BY_EXAMPLE
=
"selectOneByExample"
;
// 方法名
public
static
final
String
METHOD_SELECT_ONE_BY_EXAMPLE
=
"selectOneByExample"
;
// 方法名
public
static
final
String
METHOD_SELECT_ONE_BY_EXAMPLE_WITH_BLOBS
=
"selectOneByExampleWithBLOBs"
;
// 方法名
/**
/**
* Java Client Methods 生成
* Java Client Methods 生成
...
@@ -50,18 +51,35 @@ public class SelectOneByExamplePlugin extends BasePlugin {
...
@@ -50,18 +51,35 @@ public class SelectOneByExamplePlugin extends BasePlugin {
*/
*/
@Override
@Override
public
boolean
clientGenerated
(
Interface
interfaze
,
TopLevelClass
topLevelClass
,
IntrospectedTable
introspectedTable
)
{
public
boolean
clientGenerated
(
Interface
interfaze
,
TopLevelClass
topLevelClass
,
IntrospectedTable
introspectedTable
)
{
// 方法生成
// 方法生成
selectOneByExample
Method
method
=
JavaElementGeneratorTools
.
generateMethod
(
Method
method
=
JavaElementGeneratorTools
.
generateMethod
(
METHOD_SELECT_ONE_BY_EXAMPLE
,
METHOD_SELECT_ONE_BY_EXAMPLE
,
JavaVisibility
.
DEFAULT
,
JavaVisibility
.
DEFAULT
,
introspectedTable
.
getRules
().
calculateAllFieldsClass
(
),
JavaElementGeneratorTools
.
getModelTypeWithoutBLOBs
(
introspectedTable
),
new
Parameter
(
new
FullyQualifiedJavaType
(
introspectedTable
.
getExampleType
()),
"example"
)
new
Parameter
(
new
FullyQualifiedJavaType
(
introspectedTable
.
getExampleType
()),
"example"
)
);
);
commentGenerator
.
addGeneralMethodComment
(
method
,
introspectedTable
);
commentGenerator
.
addGeneralMethodComment
(
method
,
introspectedTable
);
// interface 增加方法
// interface 增加方法
interfaze
.
addMethod
(
method
);
interfaze
.
addMethod
(
method
);
logger
.
debug
(
"itfsw(查询单条数据插件):"
+
interfaze
.
getType
().
getShortName
()+
"增加SelectOneByExample方法。"
);
logger
.
debug
(
"itfsw(查询单条数据插件):"
+
interfaze
.
getType
().
getShortName
()+
"增加selectOneByExample方法。"
);
// 方法生成 selectOneByExampleWithBLOBs
if
(
introspectedTable
.
getRules
().
generateRecordWithBLOBsClass
()){
// 方法生成 selectOneByExample
Method
method1
=
JavaElementGeneratorTools
.
generateMethod
(
METHOD_SELECT_ONE_BY_EXAMPLE_WITH_BLOBS
,
JavaVisibility
.
DEFAULT
,
JavaElementGeneratorTools
.
getModelTypeWithBLOBs
(
introspectedTable
),
new
Parameter
(
new
FullyQualifiedJavaType
(
introspectedTable
.
getExampleType
()),
"example"
)
);
commentGenerator
.
addGeneralMethodComment
(
method1
,
introspectedTable
);
// interface 增加方法
interfaze
.
addMethod
(
method1
);
logger
.
debug
(
"itfsw(查询单条数据插件):"
+
interfaze
.
getType
().
getShortName
()+
"增加selectOneByExampleWithBLOBs方法。"
);
}
return
true
;
return
true
;
}
}
...
@@ -75,9 +93,7 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
...
@@ -75,9 +93,7 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
*/
*/
@Override
@Override
public
boolean
sqlMapDocumentGenerated
(
Document
document
,
IntrospectedTable
introspectedTable
)
{
public
boolean
sqlMapDocumentGenerated
(
Document
document
,
IntrospectedTable
introspectedTable
)
{
//数据库表名
// ------------------------------------ selectOneByExample ----------------------------------
String
tableName
=
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
();
// 生成查询语句
// 生成查询语句
XmlElement
selectOneElement
=
new
XmlElement
(
"select"
);
XmlElement
selectOneElement
=
new
XmlElement
(
"select"
);
// 添加注释(!!!必须添加注释,overwrite覆盖生成时,@see XmlFileMergerJaxp.isGeneratedNode会去判断注释中是否存在OLD_ELEMENT_TAGS中的一点,例子:@mbg.generated)
// 添加注释(!!!必须添加注释,overwrite覆盖生成时,@see XmlFileMergerJaxp.isGeneratedNode会去判断注释中是否存在OLD_ELEMENT_TAGS中的一点,例子:@mbg.generated)
...
@@ -85,14 +101,10 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
...
@@ -85,14 +101,10 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
// 添加ID
// 添加ID
selectOneElement
.
addAttribute
(
new
Attribute
(
"id"
,
METHOD_SELECT_ONE_BY_EXAMPLE
));
selectOneElement
.
addAttribute
(
new
Attribute
(
"id"
,
METHOD_SELECT_ONE_BY_EXAMPLE
));
// ----------------------------------------- 表中是否有blob类型字段 ---------------------------------------
if
(
introspectedTable
.
hasBLOBColumns
()){
// 添加返回类型
// 添加返回类型
selectOneElement
.
addAttribute
(
new
Attribute
(
"resultMap"
,
introspectedTable
.
getResultMapWithBLOBs
Id
()));
selectOneElement
.
addAttribute
(
new
Attribute
(
"resultMap"
,
introspectedTable
.
getBaseResultMap
Id
()));
// 添加参数类型
// 添加参数类型
selectOneElement
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getExampleType
()));
selectOneElement
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getExampleType
()));
// 添加查询SQL
selectOneElement
.
addElement
(
new
TextElement
(
"select"
));
//$NON-NLS-1$
selectOneElement
.
addElement
(
new
TextElement
(
"select"
));
//$NON-NLS-1$
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
...
@@ -102,10 +114,7 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
...
@@ -102,10 +114,7 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
sb
.
append
(
"' as QUERYID,"
);
//$NON-NLS-1$
sb
.
append
(
"' as QUERYID,"
);
//$NON-NLS-1$
selectOneElement
.
addElement
(
new
TextElement
(
sb
.
toString
()));
selectOneElement
.
addElement
(
new
TextElement
(
sb
.
toString
()));
}
}
selectOneElement
.
addElement
(
XmlElementGeneratorTools
.
getBaseColumnListElement
(
introspectedTable
));
selectOneElement
.
addElement
(
XmlElementGeneratorTools
.
getBaseColumnListElement
(
introspectedTable
));
selectOneElement
.
addElement
(
new
TextElement
(
","
));
//$NON-NLS-1$
selectOneElement
.
addElement
(
XmlElementGeneratorTools
.
getBlobColumnListElement
(
introspectedTable
));
sb
.
setLength
(
0
);
sb
.
setLength
(
0
);
sb
.
append
(
"from "
);
//$NON-NLS-1$
sb
.
append
(
"from "
);
//$NON-NLS-1$
...
@@ -120,40 +129,57 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
...
@@ -120,40 +129,57 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
// 只查询一条
// 只查询一条
selectOneElement
.
addElement
(
new
TextElement
(
"limit 1"
));
selectOneElement
.
addElement
(
new
TextElement
(
"limit 1"
));
}
else
{
// 添加到根节点
document
.
getRootElement
().
addElement
(
selectOneElement
);
logger
.
debug
(
"itfsw(查询单条数据插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()+
"增加selectOneByExample方法。"
);
// ------------------------------------ selectOneByExampleWithBLOBs ----------------------------------
if
(
introspectedTable
.
getRules
().
generateRecordWithBLOBsClass
()){
// 生成查询语句
XmlElement
selectOneWithBLOBsElement
=
new
XmlElement
(
"select"
);
// 添加注释(!!!必须添加注释,overwrite覆盖生成时,@see XmlFileMergerJaxp.isGeneratedNode会去判断注释中是否存在OLD_ELEMENT_TAGS中的一点,例子:@mbg.generated)
commentGenerator
.
addComment
(
selectOneWithBLOBsElement
);
// 添加ID
selectOneWithBLOBsElement
.
addAttribute
(
new
Attribute
(
"id"
,
METHOD_SELECT_ONE_BY_EXAMPLE_WITH_BLOBS
));
// 添加返回类型
// 添加返回类型
selectOne
Element
.
addAttribute
(
new
Attribute
(
"resultMap"
,
introspectedTable
.
getBaseResultMap
Id
()));
selectOne
WithBLOBsElement
.
addAttribute
(
new
Attribute
(
"resultMap"
,
introspectedTable
.
getResultMapWithBLOBs
Id
()));
// 添加参数类型
// 添加参数类型
selectOneElement
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getExampleType
()));
selectOneWithBLOBsElement
.
addAttribute
(
new
Attribute
(
"parameterType"
,
introspectedTable
.
getExampleType
()));
selectOneElement
.
addElement
(
new
TextElement
(
"select"
));
//$NON-NLS-1$
// 添加查询SQL
selectOneWithBLOBsElement
.
addElement
(
new
TextElement
(
"select"
));
//$NON-NLS-1$
StringBuilder
sb
=
new
StringBuilder
(
);
sb
.
setLength
(
0
);
if
(
stringHasValue
(
introspectedTable
.
getSelectByExampleQueryId
()))
{
if
(
stringHasValue
(
introspectedTable
.
getSelectByExampleQueryId
()))
{
sb
.
append
(
'\''
);
sb
.
append
(
'\''
);
sb
.
append
(
introspectedTable
.
getSelectByExampleQueryId
());
sb
.
append
(
introspectedTable
.
getSelectByExampleQueryId
());
sb
.
append
(
"' as QUERYID,"
);
//$NON-NLS-1$
sb
.
append
(
"' as QUERYID,"
);
//$NON-NLS-1$
selectOneElement
.
addElement
(
new
TextElement
(
sb
.
toString
()));
selectOne
WithBLOBs
Element
.
addElement
(
new
TextElement
(
sb
.
toString
()));
}
}
selectOneElement
.
addElement
(
XmlElementGeneratorTools
.
getBaseColumnListElement
(
introspectedTable
));
selectOneWithBLOBsElement
.
addElement
(
XmlElementGeneratorTools
.
getBaseColumnListElement
(
introspectedTable
));
selectOneWithBLOBsElement
.
addElement
(
new
TextElement
(
","
));
selectOneWithBLOBsElement
.
addElement
(
XmlElementGeneratorTools
.
getBlobColumnListElement
(
introspectedTable
));
sb
.
setLength
(
0
);
sb
.
setLength
(
0
);
sb
.
append
(
"from "
);
//$NON-NLS-1$
sb
.
append
(
"from "
);
//$NON-NLS-1$
sb
.
append
(
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
());
sb
.
append
(
introspectedTable
.
getAliasedFullyQualifiedTableNameAtRuntime
());
selectOneElement
.
addElement
(
new
TextElement
(
sb
.
toString
()));
selectOne
WithBLOBs
Element
.
addElement
(
new
TextElement
(
sb
.
toString
()));
selectOneElement
.
addElement
(
XmlElementGeneratorTools
.
getExampleIncludeElement
(
introspectedTable
));
selectOne
WithBLOBs
Element
.
addElement
(
XmlElementGeneratorTools
.
getExampleIncludeElement
(
introspectedTable
));
XmlElement
ifElement
=
new
XmlElement
(
"if"
);
//$NON-NLS-1$
XmlElement
ifElement
1
=
new
XmlElement
(
"if"
);
//$NON-NLS-1$
ifElement
.
addAttribute
(
new
Attribute
(
"test"
,
"orderByClause != null"
));
//$NON-NLS-1$ //$NON-NLS-2$
ifElement
1
.
addAttribute
(
new
Attribute
(
"test"
,
"orderByClause != null"
));
//$NON-NLS-1$ //$NON-NLS-2$
ifElement
.
addElement
(
new
TextElement
(
"order by ${orderByClause}"
));
//$NON-NLS-1$
ifElement
1
.
addElement
(
new
TextElement
(
"order by ${orderByClause}"
));
//$NON-NLS-1$
selectOne
Element
.
addElement
(
ifElement
);
selectOne
WithBLOBsElement
.
addElement
(
ifElement1
);
// 只查询一条
// 只查询一条
selectOneElement
.
addElement
(
new
TextElement
(
"limit 1"
));
selectOneWithBLOBsElement
.
addElement
(
new
TextElement
(
"limit 1"
));
}
// 添加到根节点
// 添加到根节点
document
.
getRootElement
().
addElement
(
selectOneElement
);
document
.
getRootElement
().
addElement
(
selectOneWithBLOBsElement
);
logger
.
debug
(
"itfsw(查询单条数据插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()+
"增加SelectOneByExample方法("
+(
introspectedTable
.
hasBLOBColumns
()
?
"有"
:
"无"
)+
"Blob类型))。"
);
logger
.
debug
(
"itfsw(查询单条数据插件):"
+
introspectedTable
.
getMyBatis3XmlMapperFileName
()+
"增加selectOneByExampleWithBLOBs方法。"
);
}
return
true
;
return
true
;
}
}
...
...
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