以下讲的是基于MVC三层架构,使用ssh框架和ssm框架,采用面向接口的方式编程。
经过实践和理论研究,ssh和ssm共同点是struts、spring,不同点是nibernate和mybatis。于是对于共同的CRUD的封装,Action类和Service类是可以完全一样,dao接口也是可以完全一样的,差别就在于实现上(采用面向接口的方式编程或设计模式中的策略模式可以让我们很好的理解这一点)。由于hibernate是完全面向对象的编程,在实现dao中就非常的方便,而且不重复;当mybatis在.java代码中也是可以做到不重复,麻烦一点的是,每个映射文件都必须编写几乎相同的配置,除了resultType不一样。
举一个例子:
ClazzMapper.xml中配置select语句:
<select id="selectClazz" parameterType="int" resultType="Clazz">
select * from clazz where id = #{id}
</select>
StudentMapper.xml中配置select语句:
<select id="selectStudent" parameterType="int" resultType="Student">
select * from student where id = #{id}
</select>
相关的文章,同学们可以参看:nibernate和mybatis的之CRUD封装差别:http://blog.csdn.net/linchengzhi/article/details/7321442