# sql-builder **Repository Path**: zhanglubing/sql-builder ## Basic Information - **Project Name**: sql-builder - **Description**: 一个JFinal的动态SQL插件。 基于Beetl模板语言,实现类似MyBatis的动态SQL功能。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2015-08-10 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sql-builder 一个JFinal的动态SQL插件。 基于Beetl模板语言,实现类似MyBatis的动态SQL功能。 思路借鉴了Freesql: https://github.com/HejiaHo/Freesql ## 如何使用? 1. 启用插件 public void configPlugin(Plugins me) { // ... me.add(new SqlBuilderPlugin()); } 2. 加载SQL文件 public void configConstant(Constants me) { // ... Sqls.load("sql.properties"); // sql.properties文件内容见后面的动态SQL示例 } 3. 构建动态SQL语句 Record record = SqlBuilder.build(sqlKey, params); // 完整的SQL语句,例如: select * from account where id = ? String sql = record.get("sql"); // select部分,例如:select * String select = record.get("select"); // from部分,例如:from account where id = ? String sqlExceptSelect = record.get("sqlExceptSelect"); // 参数列表,例如:[1024] Object[] objects = record.get("params"); 4. 使用搜索工具类 Map params = new HashMap<>(); params.put("id", 1024); params.put("status", 1); params.put("name", "测试账号"); // 分页查询 Page page = SearchKit.paginate(1, 10, "search-account", params); // 分页查询 List list = SearchKit.searchAll("get-all-account", params); // 分页查询 Record record = SearchKit.searchFirst("get-account-by-id", params); ## 动态SQL示例: get-all-account=select * from account where \ status = #(status) and type = #(type) \ ${has(name)?" and name #(like(name))"} \ ${has(start_time)?" and create_at >= #(start_time)"} \ ${has(end_time)?" and create_at <= #(end_time)"} ## Enjoy~