增加createCriteria的静态方法和测试用例
This commit is contained in:
@@ -282,6 +282,7 @@ public class Test {
|
||||
* Example增强了setOrderByClause方法,新增orderBy(String orderByClause)方法直接返回example,增强链式调用,可以一路.下去了。
|
||||
* 继续增强orderBy(String orderByClause)方法,增加orderBy(String ... orderByClauses)方法,配合数据Model属性对应Column获取插件(ModelColumnPlugin)使用效果更佳。
|
||||
* 增加基于column的操作,当配置了[数据Model属性对应Column获取插件(ModelColumnPlugin)](#8-数据model属性对应column获取插件)插件时,提供column之间的比对操作。
|
||||
* 增加createCriteria静态方法newAndCreateCriteria简写example的创建。
|
||||
|
||||
插件:
|
||||
```xml
|
||||
@@ -369,6 +370,19 @@ public class Test {
|
||||
.andField1LessThanOrEqualToColumn(Tb.Column.field2) // where field1 <= field2
|
||||
.example()
|
||||
);
|
||||
|
||||
// ---------------------------- static createCriteria -----------------------
|
||||
// simple
|
||||
this.tbMapper.selectByExample(
|
||||
new TbExample()
|
||||
.createCriteria()
|
||||
.example()
|
||||
);
|
||||
// new
|
||||
this.tbMapper.selectByExample(
|
||||
TbExample.newAndCreateCriteria()
|
||||
.example()
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -22,6 +22,8 @@ import java.util.List;
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
public class ExampleEnhancedPlugin extends BasePlugin {
|
||||
public static final String METHOD_NEW_AND_CREATE_CRITERIA = "newAndCreateCriteria"; // newAndCreateCriteria 方法
|
||||
|
||||
private boolean enableColumnOperate = false; // 是否启用column的操作
|
||||
|
||||
/**
|
||||
@@ -67,11 +69,34 @@ public class ExampleEnhancedPlugin extends BasePlugin {
|
||||
}
|
||||
|
||||
// orderBy方法
|
||||
addOrderByMethodToExample(topLevelClass, introspectedTable);
|
||||
this.addOrderByMethodToExample(topLevelClass, introspectedTable);
|
||||
|
||||
// createCriteria 静态方法
|
||||
this.addStaticCreateCriteriaMethodToExample(topLevelClass, introspectedTable);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加 createCriteria 静态方法
|
||||
* @param topLevelClass
|
||||
* @param introspectedTable
|
||||
*/
|
||||
private void addStaticCreateCriteriaMethodToExample(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
||||
Method createCriteriaMethod = JavaElementGeneratorTools.generateMethod(
|
||||
METHOD_NEW_AND_CREATE_CRITERIA,
|
||||
JavaVisibility.PUBLIC,
|
||||
FullyQualifiedJavaType.getCriteriaInstance()
|
||||
);
|
||||
commentGenerator.addGeneralMethodComment(createCriteriaMethod, introspectedTable);
|
||||
|
||||
createCriteriaMethod.setStatic(true);
|
||||
createCriteriaMethod.addBodyLine(topLevelClass.getType().getShortName() + " example = new " + topLevelClass.getType().getShortName() + "();");
|
||||
createCriteriaMethod.addBodyLine("return example.createCriteria();");
|
||||
|
||||
FormatTools.addMethodWithBestPosition(topLevelClass, createCriteriaMethod);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加列操作方法
|
||||
* @param topLevelClass
|
||||
|
||||
@@ -88,6 +88,27 @@ public class ExampleEnhancedPluginTest {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试静态 createCriteria
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
public void testStaticCreateCriteria() throws Exception{
|
||||
MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/ExampleEnhancedPlugin/mybatis-generator.xml");
|
||||
tool.generate(new AbstractShellCallback() {
|
||||
@Override
|
||||
public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
|
||||
ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper")));
|
||||
|
||||
ObjectUtil tbExampleCriteria = new ObjectUtil(loader.loadClass(packagz + ".TbExample").getMethod(ExampleEnhancedPlugin.METHOD_NEW_AND_CREATE_CRITERIA).invoke(null));
|
||||
|
||||
// 调用example方法能正常返回
|
||||
String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExampleCriteria.invoke("example"));
|
||||
Assert.assertEquals(sql, "select id, field1, field2 from tb");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试andIf方法
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user