SQL语句的构建基于FreeMarker模板,即在语句中可以使用FreeMarker支持的所有标签,如<#if>、<#list>以及${expr}等 标签格式: 在分页查询时,sqlIdCount中的语句将作为查询所有记录数的语句 例: name,loginname ]]> name,loginname ]]> 例中的sqlIdCount会在执行sqlId的过程中自动执行,这可在某些复杂语句中提高查询性能 自定义标签说明: 标签:<@p [p="prefix %s"] [s="separator"] [f="format"]>field1,field2,...

作用:检测所传参数中是否包含所列字段field1,field2,...,对检测出的每个字段生成相应的表达式 标签参数[p="prefix %s"]:默认为空,表示若所传参数中包含列出的字段,则对处理完成的语句进行格式化,其中%s表示处理完成的语句 标签参数[s="separator"]:默认为",",表示各表达式之间的分隔符 标签参数[f="format"]:默认为"%S = ?",表达式的格式化字符串,其中%s或%S(大写)表示当前字段的名称,若字符串中包含?,则会将对应参数值添加到语句参数列表 特殊用法1:若所传参数为Collectionname,age

WHERE <@p>id

,传入以下参数: List param = new ArrayList(); param.add(new Object[]{"Jack", 27, 1}); param.add(new Object[]{"Rose", 25, 2}); data.put("name", param); data.put("age", param); data.put("id", param); 则执行的语句为: UPDATE TABLE1 SET NAME = ?, AGE = ? WHERE ID = ? 执行结果为更新两条数据 特殊用法2:若所传参数为Object[],则针对每个数组值生成一次表达式,如: 对于语句:DELETE FROM TABLE1 WHERE ID IN(<@p f="?">id),传入以下参数: Object[] param = new Object[]{1, 2, 3}; data.put("id", param); 则执行的语句为: DELETE FROM TABLE1 WHERE ID IN(?, ?, ?) 执行结果为删除id为1,2,3的数据 示例1:<@p>id 1.所传参数(HashMap):{},结果:"",语句参数列表:[] 2.所传参数(HashMap):{id=>37},结果:"ID = ?",语句参数列表:[37] 示例2:<@p p="AND (%s)" s=" OR" f="UPPER(%S) LIKE ?">title,content 1.所传参数(HashMap):{title=>"标题"},结果:"AND UPPER(TITLE) LIKE ?",语句参数列表:["标题"] 2.所传参数(HashMap):{title=>"标题",content=>"内容"},结果:"AND (UPPER(TITLE) LIKE ? OR UPPER(CONTENT) LIKE ?)",语句参数列表:["标题","内容"]