# jfinal-xsql-plugin **Repository Path**: jfinal/jfinal-xsql-plugin ## Basic Information - **Project Name**: jfinal-xsql-plugin - **Description**: jfinal-xsql-plugin - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 10 - **Created**: 2016-09-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 简介 --------------- jfinal-xsql-plugin是jfinal的一个动态SQL插件,用来简化Jfinal的ActiveRecord开发,统一管理SQL语句。遇到复杂SQL时也可以让你迎刃有余,该框架写法类似mybatis/ibatis,其实却完全不同,XSQL不是ORM框架,他是个根据规则条件动态生成SQL语句与对应预编译参数的利器,使用该框架也极度简单,框架本身只实现了foreach,isempty,isnotempty,isequal,isnoequal四类常用的规则,但他不仅仅如此,他允许外部注册任意规则。 之前有开发过另外一个jfinal动态SQL插件[http://git.oschina.net/h5lib/jsql](http://git.oschina.net/h5lib/jsql) 。这框架使用的是js语法,引用了rhino的js引擎,整体会比较大,渲染速度10000次在10秒左右,新插件渲染速度10000次在1秒左右,另外[http://www.jfinal.com/share/75](http://www.jfinal.com/share/75) 在这文章有人表示无法接受这种写法,顾重新搞了一个类似ibatis 通过XML标签来控制规则的插件。 ### 示例 ------------- #### 1、SqlConfig主配置文件: ``` ``` 配置文件中仅有statement 和 sqlmap 节点,其中statements节点用来配置自定义规则,sqlmap用来引入sqlmap文件。 #### 2、SqlMap配置文件 ``` select * from user t where #{id} 1 = 0 1 = 2 select * from a where a.id = ${id} and a.name = ${name} ``` sqlmap文件中包括sqlmap节点,sql节点与sql的规则节点,sqlmap中namespace用来规定命名空间,sql节点用来管理具体sql,通过namespace+"."+id 来确定唯一一条SQL语句。 SQL语句文本中可用#{var} 和 ${var},两种形式引用变量,#{}为预编译,${}为SQL拼接。 #### 3、JfinalConfig中启用插件 >me.add(new XsqlPlugin("sql-config.xml",true)); #### 4、调用动态SQL 返回值为SqlArgs,SqlArgs中存放着sql语句,与参数列表。 > Map map = new HashMap(); map.put("ids", Arrays.asList(1,2,3)); SqlArgs sqlArgs = XsqlKit.getSqlArgs("a.sql1", map); 之后可以在ActiveRecord中无缝的使用下面方式执行SQL >Db.find(sqlArgs.sql, sqlArgs.args); #### 5、单独使用 有时我们需要通过JDBC单独使用可以参考 com.jfplugin.xsql.Test1 下的测试代码。 #### 6、详细文档 详细文档请关注官方网站:[http://www.fsdev.cn/](http://www.fsdev.cn/) ### 使用环境 ------------- 虚拟机环境:JDK1.6+ Jfinal版本:基于2.2编译,理论可支持2.0+ 官方网站:[http://www.fsdev.cn/](http://www.fsdev.cn/)