前两章我为大家详细介绍了如何搭建
Maven
环境、
Spring MVC
的流程结构、
Spring MVC
与
Struts2
的区别以及示例中的一些配置文件的分析。在这一章,我就对示例的层次结构进行说明,以及
MyBatis
的一些简单介绍。
本文不会对
MyBatis
作详细说明,大象还是假定阅读本文的朋友对
MyBatis(ibatis)
有最基本的了解,只有这样才能较好的理解本文的内容。关于
MyBatis
请查看它的官方文档及其它参考资料,本文不作详细讨论。
一、
工程结构图
上面这是典型的
Maven
项目结构形式,使用本地仓库管理
jar
包的依赖,使用插件打包编译发布非常方便,让我们从传统的开发方式中解放出来,大家都快来使用
Maven
构建项目吧!
二、
映射文件
使用
MyBatis
进行持久化操作,需要设置一个映射文件,一般来说,每张表对应一个实体对象和一个
mapper
映射文件。而
MyBatis
里面没有像
Hibernate
那样复杂的关联关系,所以,它的每个实体类其实就是一个很普通的
POJO
类。而映射文件中,都是
SQL
语句,下面就是示例中
RoleMapper.xml
的代码片段。
那么,
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
或更高版本。
五、
Service
在
ssm3
这个示例中,大家有没有发现,已经没有为每个
entity
定义一个
dao
,而是统一的调用
MyBatisDao
作为存储服务接口。
另外与使用
Hibernate
的主要区别,就是不能直接传一个对象参数,还必须写上
key
值,它是
namespace
加上
ID
值。
六、
entity
MyBatis
的实体类就是一个简单的
POJO
对象,只是用来与表字段进行关联映射,请注意,我这里所说的映射不是像
Hibernate
那种绑定关系,只一种存放数据的对象而已。
七、
测试
上面的步骤完成后,接下来就需要测试下我们的业务接口是否正常,编写一个测试类,为了达到目的,简便起见,大象是对
RoleService
进行测试,
UserService
同理类似。
在写测试用例前,需要在
POM
文件中加入一个
Srping
测试依赖,这是大象在前面两章疏忽漏掉了,请大家谅解。
然后编写测试类,运行测试,通过!
到此,这一章的内容就讲完了,如果有对注解不理解的地方,请看下我之前的
SSH2
系列之三,至于
MyBatis
,它的内容太多了,如果不清楚还请先看下使用指南。
下一章我将会介绍web层,以及使用
Spring MVC
的注解来实现控制器功能。
本文为菠萝大象原创,如要转载请注明出处。
http://www.blogjava.net/bolo/archive/2011/08/04/352845.html