jFinal 中使用动态sql

接触到老项目,发现查询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);
    }
}

应该要方便些 ^_^

你可能感兴趣的:(动态sql,jFinal)