Mybatis通用封装—基于泛型

     在java后台架构,数据库的访问,我们一般都会选择一种映射机制,主流的也就是Hibernate跟Mybatis(ibatis)。Hibernate比较方便的实现了映射关系(特别是Hibernate4采用注解的方式,显得更加简单),但是Hibernate不够灵活,当遇到复杂的SQL语句的时候Hibernate显得力不从心。Mybatis可以支撑任何的SQL语句。但是对于Mybatis我们看到大部分人还是在XML里面写大量的sql语句,包括基本的增删改成,过滤条件的处理,结果集的映射,这些都是些固定的重复的代码,导致XML文件难以维护,每次新增一个简单功能也要大张旗鼓的做很多工作。虽然mybatis官方提供自动生成实体类,映射XML文件的工具,但是生成的东西维护起来其实更加繁琐,除非我们所有的设计都基于这个工具。

     基于这个目的对Mybatis做一层封装,让可以开发人员极其简单的实现基本的增删改成,过滤条件,但是不削弱Mybatis的任何功能,对于基本语句,结果集映射我们可以非常简单的实现(并且具有定制能力),对于复杂场景还可以用Mybatis原有的方式实现。

框架的理解

1.框架要简单,最简单的方式出来最简单的结果,一定要基于默认大于修改的原则。

  所有的配置都有默认情况,尽可能找到最合理的配置,同时要提供开发配置修改的能力。

2.框架要理解开发人员的心理,知道开发人员需要什么,会怎么用,怎么想,会犯什么错,框架的成功很大部分取决于如何让开发不容易犯错。

封装目标

.我们只要建立好数据库,建立一个实体类,就可以实现数据库的增删改查,按照各种字段,不同类的过滤,排序。对基本的功能,我们不需要XML,Mapper类。同时我们拥有Mybatis原有的基本能力,也可以对不同场景做配置,所有的功能都以最少工作量来实现。

当前实现

当前工程采用Maven管理,当前实现是基于Spring的mybatis模板,由于Spring代理了mybatis的实现类,暂时没有实现实体类型动态传递的方式,只是通过泛型的方式。在实现中提供各种场景的定制,基本上都是通过java注解进行配置。当前只讲最简单的实现基础操作的步骤。(本工程刚刚实现,还有很多没有待完善的地方,希望大家多包容同时多建议)

在当前工程下只要做下面四件事情。

1.建立实体类TestEntity继承FFBaseEntity

2.配置主键, @FFColumn(isKey=true)

3.建立TestEntityDao 继承Dao

4.直接用注解注入TestEntityDao,就是实现所有的Dao中的基础方法。

开源路径

https://git.oschina.net/tangjun114/OpenSource

后续目标

1.这个组件配置做文档说明
2.实现动态类型的传递,默认去掉TestEntityDao
3.对Service,Controller,层次做封装
4.对前端封装,前后台接口做封装。
5.对权限,用户等基础模块做封装
6.实现一个完整的Web开发框架(包括移动前端的对接)。


你可能感兴趣的:(技术框架)