接触到老项目,发现查询sql在代码里面拼接的,维护起来太痛苦了.........,能像MyBatis、iBatis那样动态拼接,代码也要漂亮些。。
于是:
使用: jfinal-ext SqlInXmlPlugin 或者 Dreampie jfinal-sqlinxml 来扫描sql文件,
使用: BeetlKit.render(sqlTemplete,param); 来处理sql。
案例如下:
<sql id="dataDictionaryQueryPaging">
<![CDATA[
FROM t_s_data_dictionary
<% if(isEmpty(sort) && has(order)){ %>
ORDER BY group_type_code,type_code ${order}
<% }else if( has(sort) && has(order)){ %>
ORDER BY ${sort} ${order}
<% } %>
]]>
</sql>
public void queryPaging() {
PagingDto pagingDto = DataTableKit.getBoostrapTablePagingParameter(getRequest());
Map<String, Object> param = new HashMap();
param.put("order", getPara("order"));
param.put("sort", getPara("sort"));
Page<Record> page = Db.use(SystemConstant.SYSTEM).paginate(pagingDto.getPageNumber(),
pagingDto.getPageSize(),
"SELECT *",
BeetlSqlKit.sql("system.dataDictionaryQueryPaging", param));
renderJson(DataTableKit.toBootstrapTableData(page));
}
public class BeetlSqlKit {
/**
* @param groupNameAndsqlId
* @param param
* @return
*/
public static String sql(String groupNameAndsqlId,Map<String, Object> param){
String sqlTemplete = SqlKit.sql(groupNameAndsqlId);
if (sqlTemplete == null)
throw new NullPointerException("sqlID " + groupNameAndsqlId + " not fond!");
return BeetlKit.render(sqlTemplete,param);
}
}
应该要方便些 ^_^