在Mybatis中使用接口继承实现通用性crud

在最新的mybatis中,我们通过定义一个接口,然后通过mybatis-spring插件来调用相应的接口xml实现spring代理bean。那么考虑这样一种场景,我们定义了一个通用性的操作,如getByKey方法,即通过一个主键查找所对应的对象。这个在hibernate中可以这样来描述,即

//Hibernate
get(Serializable id,Class clazz)

//我们要实现的Mybatis版本
getByKey(Key key)

由上的调用相对比一下,会发现下面的方法缺少一个clazz,即实际要返回哪个对象。这也是在mybatis中所必须的参数信息,即在mapper.xml中,我们必须定义一个resultType,即标明要返回哪个对象。当然,可以使用通用的map,或者object对象,但是这样的实现就相比hibernate来说,弱很多了。

本文描述了一种,通过接口继承来实现统一的SQL方法,便根据不同的调用者来返回不同的数据对象的一个方法。通过这个方法,可以实现如hibernate中一样的通用性get操作,而不需要每一个数据对象写一个获取方法。

继续阅读“在Mybatis中使用接口继承实现通用性crud”