对于Model生成WithBLOBs类时,SelectOneByExample插件实现行为和官方插件保持一致
This commit is contained in:
@@ -38,6 +38,7 @@ import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
|
||||
*/
|
||||
public class SelectOneByExamplePlugin extends BasePlugin {
|
||||
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 生成
|
||||
@@ -50,18 +51,35 @@ public class SelectOneByExamplePlugin extends BasePlugin {
|
||||
*/
|
||||
@Override
|
||||
public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
||||
// 方法生成
|
||||
// 方法生成 selectOneByExample
|
||||
Method method = JavaElementGeneratorTools.generateMethod(
|
||||
METHOD_SELECT_ONE_BY_EXAMPLE,
|
||||
JavaVisibility.DEFAULT,
|
||||
introspectedTable.getRules().calculateAllFieldsClass(),
|
||||
JavaElementGeneratorTools.getModelTypeWithoutBLOBs(introspectedTable),
|
||||
new Parameter(new FullyQualifiedJavaType(introspectedTable.getExampleType()), "example")
|
||||
);
|
||||
commentGenerator.addGeneralMethodComment(method, introspectedTable);
|
||||
commentGenerator.addGeneralMethodComment(method, introspectedTable);
|
||||
|
||||
// interface 增加方法
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -75,9 +93,7 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
|
||||
*/
|
||||
@Override
|
||||
public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable) {
|
||||
//数据库表名
|
||||
String tableName = introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime();
|
||||
|
||||
// ------------------------------------ selectOneByExample ----------------------------------
|
||||
// 生成查询语句
|
||||
XmlElement selectOneElement = new XmlElement("select");
|
||||
// 添加注释(!!!必须添加注释,overwrite覆盖生成时,@see XmlFileMergerJaxp.isGeneratedNode会去判断注释中是否存在OLD_ELEMENT_TAGS中的一点,例子:@mbg.generated)
|
||||
@@ -85,75 +101,85 @@ commentGenerator.addGeneralMethodComment(method, introspectedTable);
|
||||
|
||||
// 添加ID
|
||||
selectOneElement.addAttribute(new Attribute("id", METHOD_SELECT_ONE_BY_EXAMPLE));
|
||||
// 添加返回类型
|
||||
selectOneElement.addAttribute(new Attribute("resultMap", introspectedTable.getBaseResultMapId()));
|
||||
// 添加参数类型
|
||||
selectOneElement.addAttribute(new Attribute("parameterType", introspectedTable.getExampleType()));
|
||||
selectOneElement.addElement(new TextElement("select")); //$NON-NLS-1$
|
||||
|
||||
// ----------------------------------------- 表中是否有blob类型字段 ---------------------------------------
|
||||
if (introspectedTable.hasBLOBColumns()){
|
||||
// 添加返回类型
|
||||
selectOneElement.addAttribute(new Attribute("resultMap", introspectedTable.getResultMapWithBLOBsId()));
|
||||
// 添加参数类型
|
||||
selectOneElement.addAttribute(new Attribute("parameterType", introspectedTable.getExampleType()));
|
||||
// 添加查询SQL
|
||||
selectOneElement.addElement(new TextElement("select")); //$NON-NLS-1$
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (stringHasValue(introspectedTable.getSelectByExampleQueryId())) {
|
||||
sb.append('\'');
|
||||
sb.append(introspectedTable.getSelectByExampleQueryId());
|
||||
sb.append("' as QUERYID,"); //$NON-NLS-1$
|
||||
selectOneElement.addElement(new TextElement(sb.toString()));
|
||||
}
|
||||
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getBaseColumnListElement(introspectedTable));
|
||||
selectOneElement.addElement(new TextElement(",")); //$NON-NLS-1$
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getBlobColumnListElement(introspectedTable));
|
||||
|
||||
sb.setLength(0);
|
||||
sb.append("from "); //$NON-NLS-1$
|
||||
sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (stringHasValue(introspectedTable.getSelectByExampleQueryId())) {
|
||||
sb.append('\'');
|
||||
sb.append(introspectedTable.getSelectByExampleQueryId());
|
||||
sb.append("' as QUERYID,"); //$NON-NLS-1$
|
||||
selectOneElement.addElement(new TextElement(sb.toString()));
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getExampleIncludeElement(introspectedTable));
|
||||
|
||||
XmlElement ifElement = new XmlElement("if"); //$NON-NLS-1$
|
||||
ifElement.addAttribute(new Attribute("test", "orderByClause != null")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
ifElement.addElement(new TextElement("order by ${orderByClause}")); //$NON-NLS-1$
|
||||
selectOneElement.addElement(ifElement);
|
||||
|
||||
// 只查询一条
|
||||
selectOneElement.addElement(new TextElement("limit 1"));
|
||||
} else {
|
||||
// 添加返回类型
|
||||
selectOneElement.addAttribute(new Attribute("resultMap", introspectedTable.getBaseResultMapId()));
|
||||
// 添加参数类型
|
||||
selectOneElement.addAttribute(new Attribute("parameterType", introspectedTable.getExampleType()));
|
||||
selectOneElement.addElement(new TextElement("select")); //$NON-NLS-1$
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (stringHasValue(introspectedTable.getSelectByExampleQueryId())) {
|
||||
sb.append('\'');
|
||||
sb.append(introspectedTable.getSelectByExampleQueryId());
|
||||
sb.append("' as QUERYID,"); //$NON-NLS-1$
|
||||
selectOneElement.addElement(new TextElement(sb.toString()));
|
||||
}
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getBaseColumnListElement(introspectedTable));
|
||||
|
||||
sb.setLength(0);
|
||||
sb.append("from "); //$NON-NLS-1$
|
||||
sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
|
||||
selectOneElement.addElement(new TextElement(sb.toString()));
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getExampleIncludeElement(introspectedTable));
|
||||
|
||||
XmlElement ifElement = new XmlElement("if"); //$NON-NLS-1$
|
||||
ifElement.addAttribute(new Attribute("test", "orderByClause != null")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
ifElement.addElement(new TextElement("order by ${orderByClause}")); //$NON-NLS-1$
|
||||
selectOneElement.addElement(ifElement);
|
||||
|
||||
// 只查询一条
|
||||
selectOneElement.addElement(new TextElement("limit 1"));
|
||||
}
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getBaseColumnListElement(introspectedTable));
|
||||
|
||||
sb.setLength(0);
|
||||
sb.append("from "); //$NON-NLS-1$
|
||||
sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
|
||||
selectOneElement.addElement(new TextElement(sb.toString()));
|
||||
selectOneElement.addElement(XmlElementGeneratorTools.getExampleIncludeElement(introspectedTable));
|
||||
|
||||
XmlElement ifElement = new XmlElement("if"); //$NON-NLS-1$
|
||||
ifElement.addAttribute(new Attribute("test", "orderByClause != null")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
ifElement.addElement(new TextElement("order by ${orderByClause}")); //$NON-NLS-1$
|
||||
selectOneElement.addElement(ifElement);
|
||||
|
||||
// 只查询一条
|
||||
selectOneElement.addElement(new TextElement("limit 1"));
|
||||
// 添加到根节点
|
||||
document.getRootElement().addElement(selectOneElement);
|
||||
logger.debug("itfsw(查询单条数据插件):"+introspectedTable.getMyBatis3XmlMapperFileName()+"增加SelectOneByExample方法("+(introspectedTable.hasBLOBColumns() ? "有" : "无")+"Blob类型))。");
|
||||
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));
|
||||
// 添加返回类型
|
||||
selectOneWithBLOBsElement.addAttribute(new Attribute("resultMap", introspectedTable.getResultMapWithBLOBsId()));
|
||||
// 添加参数类型
|
||||
selectOneWithBLOBsElement.addAttribute(new Attribute("parameterType", introspectedTable.getExampleType()));
|
||||
// 添加查询SQL
|
||||
selectOneWithBLOBsElement.addElement(new TextElement("select")); //$NON-NLS-1$
|
||||
|
||||
sb.setLength(0);
|
||||
if (stringHasValue(introspectedTable.getSelectByExampleQueryId())) {
|
||||
sb.append('\'');
|
||||
sb.append(introspectedTable.getSelectByExampleQueryId());
|
||||
sb.append("' as QUERYID,"); //$NON-NLS-1$
|
||||
selectOneWithBLOBsElement.addElement(new TextElement(sb.toString()));
|
||||
}
|
||||
|
||||
selectOneWithBLOBsElement.addElement(XmlElementGeneratorTools.getBaseColumnListElement(introspectedTable));
|
||||
selectOneWithBLOBsElement.addElement(new TextElement(","));
|
||||
selectOneWithBLOBsElement.addElement(XmlElementGeneratorTools.getBlobColumnListElement(introspectedTable));
|
||||
|
||||
sb.setLength(0);
|
||||
sb.append("from "); //$NON-NLS-1$
|
||||
sb.append(introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime());
|
||||
selectOneWithBLOBsElement.addElement(new TextElement(sb.toString()));
|
||||
selectOneWithBLOBsElement.addElement(XmlElementGeneratorTools.getExampleIncludeElement(introspectedTable));
|
||||
|
||||
XmlElement ifElement1 = new XmlElement("if"); //$NON-NLS-1$
|
||||
ifElement1.addAttribute(new Attribute("test", "orderByClause != null")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
ifElement1.addElement(new TextElement("order by ${orderByClause}")); //$NON-NLS-1$
|
||||
selectOneWithBLOBsElement.addElement(ifElement1);
|
||||
|
||||
// 只查询一条
|
||||
selectOneWithBLOBsElement.addElement(new TextElement("limit 1"));
|
||||
|
||||
// 添加到根节点
|
||||
document.getRootElement().addElement(selectOneWithBLOBsElement);
|
||||
logger.debug("itfsw(查询单条数据插件):"+introspectedTable.getMyBatis3XmlMapperFileName()+"增加selectOneByExampleWithBLOBs方法。");
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user