Skip to content

SQL模板

完美结合框架,旨在替换重要列名 表名

普通模板- CmdTemplate

普通的SQL模板,推荐使用 Methods.tpl静态方法去创建

函数模板- FunTemplate

后续可继续调用框架的函数,推荐使用 Methods.fTpl静态方法去创建

条件模板- ConditionTemplate

用于 where 中,推荐使用 Methods.cTpl静态方法去创建

关于模板特殊字符 单引号"'"导致模板错误

模板使用的MessageFormat替换占位的,单引号"'"属于MessageFormat特殊字符;

1:如果要消除错误,需要2个单引号表达单引号

2:也可以开启封装模式,第一个参数为boolean true 即可;例如

java
Methods.cTpl(true,"{0}+{1}='12123'",cs[0],cs[1]);
//true就是框架自动把'改成'';自动消除影响;让模板SQL看着更美观

SQL模板如何用?

3个模板类:普通模板 CmdTemplate ,函数模板 FunTemplate(后续可继续调用框架的函数),条件模板 ConditionTemplate(可用于 where 中)

java
QueryChain queryChain = QueryChain.of(sysUserMapper);
queryChain.select(SysUser::getRole_id, c -> Methods.tpl("count({0})+{1}", c, "1"));
queryChain.from(SysUser.class);
queryChain.and(GetterFields.of(SysUser::getId, SysUser::getId),cs -> Methods.cTpl("{0}+{1}={2}", cs[0], cs[1], 2));
queryChain.returnType(String.class);
String str = queryChain.get();
java
QueryChain queryChain = QueryChain.of(sysUserMapper);
queryChain.select(SysUser::getRole_id, c -> Methods.fTpl("count({0})",c).plus(1).concat(1,"2",3).length());
queryChain.from(SysUser.class);
queryChain.and(GetterFields.of(SysUser::getId, SysUser::getId),cs -> Methods.cTpl("{0}+{1}={2}", cs[0], cs[1], 2));
queryChain.returnType(String.class);
String str = queryChain.get();

特殊字符说明,例如:单引号

解决模板中含有特殊字符 ,方法一:使用2个单引号表达

解决模板中含有特殊字符 ,方法二:不使用固定的值,例如

Methods.tpl("{0}='abc'", c) 
改成
Methods.tpl("{0}={1}", c,"abc")