Jfire-Orm框架1.0推出

Jfire-Orm框架1.0推出



框架背景

在Java开发中,和数据库打交道是不可避免的。目前市面上比较流行的Orm框架主要有Hibernate和MyBatis。前者实现彻底的对象数据库映射,在单表操作方面十分的便捷。后者实现sql语句和接口方法绑定,拥有很高的自由度。但是两种框架都有各自的缺点。

  • Hibernate:Hibernate擅长单表操作,也长于多表关联。但是项目中为了性能,有时候需要控制多表关联的使用场景。大部分时候这个选项是被关闭的。而且很多项目中,都是单表操作来规避性能问题。同时,由于Hql语句并不能模拟所有的sql语句,一些要用到复杂查询的时候Hql就会很吃力。同时对于项目中最常见的动态条件Sql查询,Hibernate也没有解决方案,只能通过手动拼写Hql语句的方式解决。并且如果一些查询有时候也不能方便的映射为对象。特别是直接使用sql的时候。
  • MyBatis:MyBatis通过将sql语句和接口方法进行绑定,将sql语句写在Xml文件中。在sql的操纵上,是非常方便的。但是有两个缺点:(1)缺少单表CURD的直接支持机制。对于单表的CURD操作,还是需要写四个语句来实现,对比于Hibernate一个注解就搞定的还是麻烦很多(2)xml文档中的sql语句绑定,需要写很多额外的信息,比如返回对象类型等等,而这些信息实际上是可以通过反射来得到。

基于以上的背景,在项目开发中,其实我们需要综合二者的优点。一方面是快速的单表CURD支持,最好不需要额外配置;一方面的灵活的操纵sql语句并且能够方便的将结果映射为对象。并且在满足这两个条件的基础上,尽可能的少配置。同时支持一些的动态sql功能。减少手工拼接sql的重复劳动。
有了上面明确的需求,现在正式推出Jfire-Orm框架。

框架优点

  1. 简单直接的单表CURD支持。通过注解将对象和数据库表形成关联,对对象的CURD操作等同于数据库CURD操作
  2. sql语句和接口方法绑定,通过反射获取关键信息,减少信息编写,注解内容只有两个,一个是sql语句,一个是方法入参名称。
  3. 动态sql支持,支持条件非空判断,自动sql拼接。

框架使用

框架的使用在文档中有具体的说明,这里不多说,举一个使用sql绑定的例子给大家看看。

public interface UserOp{
    @query(sql="select * from user where id={id}",paramNames={"id"})
    public User query(integer id);

    @Query(sql = "select * from user where 1=1 [user.age] and age={user.age}# [user.name] and username={user.name}# [user.id] and userid={user.id}#", paramNames = { "user" })
    public List<User> dynamicQuery(User user);

}
public UserService{
    public User find(integer id){
        SqlSession session = sessionFactory.getCurrentSession();
        //获取接口的实例,这个实例是框架自动生成的,每次获取都是一个新对象,同时该对象内使用了当前的session。所以如果session关闭,该实例不可继续进行操作
        Userop userop = session.getMapper(Userop.Class);
        return userop.query(id);
    }
}

上述代码中,第一个方法是很常见的查询,查询结果转换对象都是自动完成。第二个方法则是框架中较为实用的动态sql。如果[]中的值为null,则[]到#之间的语句就不会出现在sql中。反之则会,而对应的查询参数也会被自动放入

框架地址

目前项目托管在oschina上,地址为http://git.oschina.net/eric_ds/jfire-orm
项目需要使用的依赖上传于oschina的maven仓库。可以在其中查询下载
也欢迎大家通过邮箱和我联系,我的邮箱是[email protected]

猜你喜欢

转载自blog.csdn.net/kuangzhanshatian/article/details/48055381