Commit 16a02477 authored by hewei's avatar hewei

SelectSelectivePlugin插件重构

parent baf72992
...@@ -129,7 +129,7 @@ public class BatchInsertPlugin extends BasePlugin { ...@@ -129,7 +129,7 @@ public class BatchInsertPlugin extends BasePlugin {
XmlElementGeneratorTools.useGeneratedKeys(batchInsertEle, introspectedTable); XmlElementGeneratorTools.useGeneratedKeys(batchInsertEle, introspectedTable);
batchInsertEle.addElement(new TextElement("insert into " + introspectedTable.getFullyQualifiedTableNameAtRuntime())); batchInsertEle.addElement(new TextElement("insert into " + introspectedTable.getFullyQualifiedTableNameAtRuntime()));
for (Element element : XmlElementGeneratorTools.generateKeys(ListUtilities.removeIdentityAndGeneratedAlwaysColumns(introspectedTable.getAllColumns()))) { for (Element element : XmlElementGeneratorTools.generateKeys(ListUtilities.removeIdentityAndGeneratedAlwaysColumns(introspectedTable.getAllColumns()), true)) {
batchInsertEle.addElement(element); batchInsertEle.addElement(element);
} }
......
...@@ -132,9 +132,13 @@ public class SelectOneByExamplePlugin extends BasePlugin { ...@@ -132,9 +132,13 @@ public class SelectOneByExamplePlugin extends BasePlugin {
// 只查询一条 // 只查询一条
selectOneElement.addElement(new TextElement("limit 1")); selectOneElement.addElement(new TextElement("limit 1"));
// hook
if (PluginTools.getHook(ISelectOneByExamplePluginHook.class).sqlMapSelectOneByExampleWithoutBLOBsElementGenerated(document, selectOneElement, introspectedTable)) {
// 添加到根节点 // 添加到根节点
FormatTools.addElementWithBestPosition(document.getRootElement(), selectOneElement); FormatTools.addElementWithBestPosition(document.getRootElement(), selectOneElement);
logger.debug("itfsw(查询单条数据插件):" + introspectedTable.getMyBatis3XmlMapperFileName() + "增加selectOneByExample方法。"); logger.debug("itfsw(查询单条数据插件):" + introspectedTable.getMyBatis3XmlMapperFileName() + "增加selectOneByExample方法。");
}
// ------------------------------------ selectOneByExampleWithBLOBs ---------------------------------- // ------------------------------------ selectOneByExampleWithBLOBs ----------------------------------
// !!! 注意这里的行为不以有没有生成Model 的 WithBLOBs类为基准 // !!! 注意这里的行为不以有没有生成Model 的 WithBLOBs类为基准
...@@ -179,10 +183,13 @@ public class SelectOneByExamplePlugin extends BasePlugin { ...@@ -179,10 +183,13 @@ public class SelectOneByExamplePlugin extends BasePlugin {
// 只查询一条 // 只查询一条
selectOneWithBLOBsElement.addElement(new TextElement("limit 1")); selectOneWithBLOBsElement.addElement(new TextElement("limit 1"));
// hook
if (PluginTools.getHook(ISelectOneByExamplePluginHook.class).sqlMapSelectOneByExampleWithBLOBsElementGenerated(document, selectOneWithBLOBsElement, introspectedTable)) {
// 添加到根节点 // 添加到根节点
FormatTools.addElementWithBestPosition(document.getRootElement(), selectOneWithBLOBsElement); FormatTools.addElementWithBestPosition(document.getRootElement(), selectOneWithBLOBsElement);
logger.debug("itfsw(查询单条数据插件):" + introspectedTable.getMyBatis3XmlMapperFileName() + "增加selectOneByExampleWithBLOBs方法。"); logger.debug("itfsw(查询单条数据插件):" + introspectedTable.getMyBatis3XmlMapperFileName() + "增加selectOneByExampleWithBLOBs方法。");
} }
}
return true; return true;
......
...@@ -134,28 +134,17 @@ public class XmlElementGeneratorTools { ...@@ -134,28 +134,17 @@ public class XmlElementGeneratorTools {
* @return * @return
*/ */
public static List<Element> generateKeys(List<IntrospectedColumn> columns) { public static List<Element> generateKeys(List<IntrospectedColumn> columns) {
return generateKeys(columns, null); return generateKeys(columns, false);
} }
/** /**
* 生成keys Ele * 生成keys Ele
* @param columns * @param columns
* @param prefix
* @return
*/
public static List<Element> generateKeys(List<IntrospectedColumn> columns, String prefix) {
return generateKeys(columns, prefix, true);
}
/**
* 生成keys Ele
* @param columns
* @param prefix
* @param bracket * @param bracket
* @return * @return
*/ */
public static List<Element> generateKeys(List<IntrospectedColumn> columns, String prefix, boolean bracket) { public static List<Element> generateKeys(List<IntrospectedColumn> columns, boolean bracket) {
return generateCommColumns(columns, prefix, bracket, 1); return generateCommColumns(columns, null, bracket, 1);
} }
/** /**
......
...@@ -25,6 +25,7 @@ import org.mybatis.generator.api.dom.java.InnerClass; ...@@ -25,6 +25,7 @@ import org.mybatis.generator.api.dom.java.InnerClass;
import org.mybatis.generator.api.dom.java.Interface; import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.java.TopLevelClass; import org.mybatis.generator.api.dom.java.TopLevelClass;
import org.mybatis.generator.api.dom.xml.Document;
import org.mybatis.generator.api.dom.xml.Element; import org.mybatis.generator.api.dom.xml.Element;
import org.mybatis.generator.api.dom.xml.XmlElement; import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.config.Context; import org.mybatis.generator.config.Context;
...@@ -210,7 +211,6 @@ public class HookAggregator implements IUpsertPluginHook, IModelBuilderPluginHoo ...@@ -210,7 +211,6 @@ public class HookAggregator implements IUpsertPluginHook, IModelBuilderPluginHoo
// ============================================= ISelectOneByExamplePluginHook ============================================== // ============================================= ISelectOneByExamplePluginHook ==============================================
@Override @Override
public boolean clientSelectOneByExampleWithBLOBsMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) { public boolean clientSelectOneByExampleWithBLOBsMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
for (ISelectOneByExamplePluginHook plugin : this.getPlugins(ISelectOneByExamplePluginHook.class)) { for (ISelectOneByExamplePluginHook plugin : this.getPlugins(ISelectOneByExamplePluginHook.class)) {
...@@ -230,4 +230,24 @@ public class HookAggregator implements IUpsertPluginHook, IModelBuilderPluginHoo ...@@ -230,4 +230,24 @@ public class HookAggregator implements IUpsertPluginHook, IModelBuilderPluginHoo
} }
return true; return true;
} }
@Override
public boolean sqlMapSelectOneByExampleWithoutBLOBsElementGenerated(Document document, XmlElement element, IntrospectedTable introspectedTable) {
for (ISelectOneByExamplePluginHook plugin : this.getPlugins(ISelectOneByExamplePluginHook.class)) {
if (!plugin.sqlMapSelectOneByExampleWithoutBLOBsElementGenerated(document, element, introspectedTable)) {
return false;
}
}
return true;
}
@Override
public boolean sqlMapSelectOneByExampleWithBLOBsElementGenerated(Document document, XmlElement element, IntrospectedTable introspectedTable) {
for (ISelectOneByExamplePluginHook plugin : this.getPlugins(ISelectOneByExamplePluginHook.class)) {
if (!plugin.sqlMapSelectOneByExampleWithBLOBsElementGenerated(document, element, introspectedTable)) {
return false;
}
}
return true;
}
} }
...@@ -19,6 +19,8 @@ package com.itfsw.mybatis.generator.plugins.utils.hook; ...@@ -19,6 +19,8 @@ package com.itfsw.mybatis.generator.plugins.utils.hook;
import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.Interface; import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.xml.Document;
import org.mybatis.generator.api.dom.xml.XmlElement;
/** /**
* --------------------------------------------------------------------------- * ---------------------------------------------------------------------------
...@@ -48,4 +50,21 @@ public interface ISelectOneByExamplePluginHook { ...@@ -48,4 +50,21 @@ public interface ISelectOneByExamplePluginHook {
*/ */
boolean clientSelectOneByExampleWithoutBLOBsMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable); boolean clientSelectOneByExampleWithoutBLOBsMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable);
/**
* selectOneByExample 方法sqlMap实现
* @param document
* @param element
* @param introspectedTable
* @return
*/
boolean sqlMapSelectOneByExampleWithoutBLOBsElementGenerated(Document document, XmlElement element, IntrospectedTable introspectedTable);
/**
* selectOneByExampleWithBLOBs 方法sqlMap实现
* @param document
* @param element
* @param introspectedTable
* @return
*/
boolean sqlMapSelectOneByExampleWithBLOBsElementGenerated(Document document, XmlElement element, IntrospectedTable introspectedTable);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment