• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

JFinal-Sql-xml: 这是一个基于JFinal ActiveRecord的插件,目标是成为半个Mybatis一样 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

JFinal-Sql-xml

开源软件地址:

https://gitee.com/vmo/JFinal-Sql-xml

开源软件介绍:

#JFinal-Sql-Xml这是一个基于JFinal ActiveRecord的插件,目标是成为半个Mybatis一样好用的sql工具,提供简单的sql拼接功能。

快速上手

与Mybatis一样,使用JFinal-Sql-Xml插件,一个接口对应一个XMl文档。

在JFinal-Sql-Xml插件的Xml文档中,你可以方便的在根节点使用 xsd 说明。这样你的ide编辑器就会稍微智能的提示输入。请注意,务必使用 Mapper 标签作为根节点,因为在插件启动的时候,会过滤掉非 Mapper 根节点的xml。

<?xml version="1.0" encoding="UTF-8"?><Mapper        xmlns="www.jfinal.com/sqlxml"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="www.jfinal.com/sqlxml http://git.oschina.net/vmo/JFinal-Sql-xml/raw/master/src/main/java/sqlxml.xsd"        ></Mapper>

在每一个Mapper文档中,必须包含 for-class 标签,并在for-class标签中填上当前xml对应的接口的名称。

<?xml version="1.0" encoding="UTF-8"?><Mapper        xmlns="www.jfinal.com/sqlxml"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="www.jfinal.com/sqlxml http://git.oschina.net/vmo/JFinal-Sql-xml/raw/master/src/main/java/sqlxml.xsd"        >    <for-class>com.jfinal.plugin.sqlxml.test.dao.UserSqlDao</for-class></Mapper>

我们来看下,UserSqlDao里面写了什么东西。

public interface UserSqlDao {    public User validPassword(String name, String email, String password);    public List<User> getUserByNameLike(String name);    public Page<User> getUserByNameLikeWithPage(String name,int pageNumber,int pageSize);    public boolean updateUserPassword(Integer id, String oldPassword, String newPassword);}

一个标准的java接口,里面定义了四个函数,分别是验证密码,根据用户名查找用户,根据用户名查找用户并分页,和更新指定id的用户密码。

直接看对应的xml文件:

<?xml version="1.0" encoding="UTF-8"?><Mapper        xmlns="www.jfinal.com/sqlxml"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="www.jfinal.com/sqlxml http://git.oschina.net/vmo/JFinal-Sql-xml/raw/master/src/main/java/sqlxml.xsd"        >    <for-class>com.jfinal.plugin.sqlxml.test.dao.UserSqlDao</for-class>    <select action="validPassword" paras="name,email,password">        select * from user where        <if condition="name!=null">name=${name} and password=MD5(CONCAT(${password},salt))</if>        <if condition="email!=null">email=${email} and password=MD5(CONCAT(${password},salt))</if>        <if condition="email==null &amp;&amp; name==null">            <exception>不能这么坑哦!</exception>        </if>    </select>    <select action="getUserByNameLike" paras="name">        select id,name from user where name like ${name}    </select>    <select action="getUserByNameLikeWithPage" paras="name">         select id,name <use-page/> from user where name like ${name}    </select>    <update action="updateUserPassword" paras="id,oldPassword,newPassword">        update user set password=${newPassword} where id=${id} and oldPassword=MD5(CONCAT(${newPassword},salt))    </update></Mapper>

select 标签与 update 标签

在Mapper节点下面,除了for-class标签,还存在两个重要的标签,分别是 select 标签与 update 标签。select标签代表该方法执行的是查询语句,update则代表更新、删除、插入语句。

select标签与update标签中,需要两个属性,分别是 actionparas

action 表示此标签对应的方法名, paras 则一一对应方法的参数名,paras里,属性名用 , 隔开。

在select、update标签内直接出现的文本会被最终处理成sql语句片段。

和Mybatis一样,sql中支持简单的${para} 与#{para}。

  1. ${para}的属性会当成sql最终执行的参数传入,其出现的位置会被?代替。
  2. 而#{para}则简单粗暴的将para的值和sql文本连在一起( 会有sql注入危险! )。

Sql中支持的标签:if 、 use-page、 exception

  • if标签: if标签必须定义condition属性,condition属性的内容是标准的java代码片段,要求必须是boolean值(原因是直接使用javassist生成的类,而不是解释执行),如果condition内的值为true,则执行if标签内的内容(if标签暂不支持嵌套)。

  • use-page标签: 当返回值为Page类型时,插件会认为这是一个有分页需求的方法,在方法的参数列表内,必须含有名为pageNumber,pageSize的参数名,且对应参数类型为int。在sql中,也必须使用use-page标签,use-page之前与之后的内容,作为JFinal分页方法的两个参数传入。

  • exception: 与if配合使用,标签内的内容会抛出SqlXmlException异常。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
pool: Golang 通用连接池库发布时间:2022-03-24
下一篇:
neo4j-rtree: 一个用于neo4j的空间索引发布时间:2022-03-24
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap