[置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)

前两章我为大家详细介绍了如何搭建 Maven 环境、 Spring MVC 的流程结构、 Spring MVC Struts2 的区别以及示例中的一些配置文件的分析。在这一章,我就对示例的层次结构进行说明,以及 MyBatis 的一些简单介绍。
     本文不会对 MyBatis 作详细说明,大象还是假定阅读本文的朋友对 MyBatis(ibatis) 有最基本的了解,只有这样才能较好的理解本文的内容。关于 MyBatis 请查看它的官方文档及其它参考资料,本文不作详细讨论。
     一、 工程结构图
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第1张图片
     上面这是典型的 Maven 项目结构形式,使用本地仓库管理 jar 包的依赖,使用插件打包编译发布非常方便,让我们从传统的开发方式中解放出来,大家都快来使用 Maven 构建项目吧!
     二、 映射文件
     使用 MyBatis 进行持久化操作,需要设置一个映射文件,一般来说,每张表对应一个实体对象和一个 mapper 映射文件。而 MyBatis 里面没有像 Hibernate 那样复杂的关联关系,所以,它的每个实体类其实就是一个很普通的 POJO 类。而映射文件中,都是 SQL 语句,下面就是示例中 RoleMapper.xml 的代码片段。
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第2张图片
     那么, MyBatis 是如何将数据库字段与 POJO 对象进行映射的呢?这是在它的内部,会将到得的结果或结构集,与我们定义的 POJO 对象属性进行映射,规则是,属性首字母小写,使用驼峰式命名方式,而字段则是单词与单词间,用下划线连接。比如:数据库有个 USER_NAME 字段,那么与它对应的属性就应该是 userName 。如果字段命名没有使用下划线,那么属性可以直接定义成该单词。比如, NAME 字段,它的属性就是 name
     三、 基于 namespace接口与公用dao的区别
     MyBatis3.0 开始,对 mapper 中的 namespace 属性新增了一个特性:可以指定具体的接口来作为持久化操作类,在接口中定义与映射文件中 id 属性值相同的方法, MyBatis 会自动去绑定和执行对应的 SQL 语句。这种接口实现方式,需要为每个 Mapper 创建一个接口,如果系统做大了,维护这些类会比较麻烦,大象个人倾向于基础服务式的 Dao 实现类,如例子中的 MyBatisDao
     四、 MyBatisDao
     持久化操作基类, SqlSessionDaoSupport mybatis-spring 插件中封装的,用于获得 SQL Session 连接,执行数据库操作,我定义了几个常用的方法。
     关于 mybatis-spring 插件我简单介绍一下,  Spring 3.x 的发布并没有对 MyBatis 这一优秀的 SQL 框架提供支持,虽然在它的问题列表中已经有这样的请求,但直到目前 3.0.5 版的发布,都还没将这个问题处理掉。不过这难不倒开源世界里广大的爱好者与贡献者, mybatis-spring 就是在这样的情况下诞生了。它是由 MyBatis 社区爱好者完成的一个开源项目,用来进行 Spring 3.0 MyBatis 3.0 的配置整合。该插件需要运行在 JDK 5.0 或更高版本。
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第3张图片
     五、 Service
     ssm3 这个示例中,大家有没有发现,已经没有为每个 entity 定义一个 dao ,而是统一的调用 MyBatisDao 作为存储服务接口。 另外与使用 Hibernate 的主要区别,就是不能直接传一个对象参数,还必须写上 key 值,它是 namespace 加上 ID 值。
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第4张图片
      六、 entity
     MyBatis 的实体类就是一个简单的 POJO 对象,只是用来与表字段进行关联映射,请注意,我这里所说的映射不是像 Hibernate 那种绑定关系,只一种存放数据的对象而已。
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第5张图片
     七、 测试
     上面的步骤完成后,接下来就需要测试下我们的业务接口是否正常,编写一个测试类,为了达到目的,简便起见,大象是对 RoleService 进行测试, UserService 同理类似。
     在写测试用例前,需要在 POM 文件中加入一个 Srping 测试依赖,这是大象在前面两章疏忽漏掉了,请大家谅解。
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第6张图片
    然后编写测试类,运行测试,通过!
     [置顶] Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)_第7张图片
    到此,这一章的内容就讲完了,如果有对注解不理解的地方,请看下我之前的SSH2系列之三,至于MyBatis,它的内容太多了,如果不清楚还请先看下使用指南。 下一章我将会介绍web层,以及使用 Spring MVC 的注解来实现控制器功能。
 

本文为菠萝大象原创,如要转载请注明出处。菠萝大象

你可能感兴趣的:(spring,maven,mvc,struts2,MyBatis3.0.4)