迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:jfinal-xsql-plugin开源软件地址:https://gitee.com/xiyoufang/jfinal-xsql-plugin开源软件介绍:简介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 。这框架使用的是js语法,引用了rhino的js引擎,整体会比较大,渲染速度10000次在10秒左右,新插件渲染速度10000次在1秒左右,另外http://www.jfinal.com/share/75 在这文章有人表示无法接受这种写法,顾重新搞了一个类似ibatis 通过XML标签来控制规则的插件。 ###MAVEN导入 <dependency> <groupId>cn.fsdev</groupId> <artifactId>jfinal-xsql-plugin</artifactId> <version>2.2</version></dependency> 示例1、SqlConfig主配置文件:<sqlconfig> <statements> <statement tag="isnull" class="com.jfplugin.xsql.IsNullStatement" /> </statements> <sqlmap path="classpath:sql-a.xml"></sqlmap> <sqlmap path="classpath:sql-b.xml"></sqlmap> <sqlmap path="classpath:sql-c.xml"></sqlmap></sqlconfig> 配置文件中仅有statement 和 sqlmap 节点,其中statements节点用来配置自定义规则,sqlmap用来引入sqlmap文件。 2、SqlMap配置文件<sqlmap namespace="a"> <!-- 第一条SQL --> <sql id="sql1"> select * from user t where <isnotempty property="ids" prepend=""> <foreach collection="ids" item="id" open="(" close=")" separator="," prepend="t.id NOT IN " > #{id} </foreach> </isnotempty> <isempty property="ids" prepend=""> 1 = 0 </isempty> <isnull> 1 = 2 </isnull> </sql> <!-- 第二条SQL --> <sql id="sql2"> select * from a where a.id = ${id} and a.name = ${name} </sql></sqlmap> sqlmap文件中包括sqlmap节点,sql节点与sql的规则节点,sqlmap中namespace用来规定命名空间,sql节点用来管理具体sql,通过namespace+"."+id 来确定唯一一条SQL语句。SQL语句文本中可用#{var} 和 ${var},两种形式引用变量,#{}为预编译,${}为SQL拼接。 3、JfinalConfig中启用插件
4、调用动态SQL返回值为SqlArgs,SqlArgs中存放着sql语句,与参数列表。
之后可以在ActiveRecord中无缝的使用下面方式执行SQL
5、单独使用有时我们需要通过JDBC单独使用可以参考 com.jfplugin.xsql.Test1 下的测试代码。 6、详细文档详细文档请关注官方网站:http://www.fsdev.cn/ 使用环境虚拟机环境:JDK1.6+Jfinal版本:基于2.2编译,理论可支持2.0+ 官方网站:http://www.fsdev.cn/ ![]() |
请发表评论