前两章我为大家详细介绍了如何搭建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

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)的更多相关文章

  1. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)

    在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些 ...

  2. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)

    这一章大象将详细分析web层代码,以及使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能.     之前在使用Struts2实现MVC的注解时,是借助struts2-conventi ...

  3. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)

    Spring更新到3.0之后,其MVC框架加入了一个非常不错的东西——那就是REST.它的开放式特性,与Spring的无缝集成,以及Spring框架的优秀表现,使得现在很多公司将其作为新的系统开发框架 ...

  4. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(五)

    这是本系列的最后一篇,主要讲一下FreeMarker模板引擎的基本概念与常用指令的使用方式.     一.FreemMarker基本概念     FreemMarker是一个用Java语言编写的模板引 ...

  5. Spring mvc系列一之 Spring mvc简单配置

    Spring mvc系列一之 Spring mvc简单配置-引用 Spring MVC做为SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块 ...

  6. Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍

    Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍 spring集成 mybatis Spring4.x零配置框架搭建 两年前一直在做后 ...

  7. Spring MVC(3)Spring MVC 高级应用

    一.Spring MVC 的数据转换和格式化 前面的应用,都只是用HandlerAdapter去执行处理器. 处理器和控制器不是一个概念,处理器是在控制器功能的基础上加上了一层包装,有了这层包装,在H ...

  8. Spring MVC(2)Spring MVC 组件开发

    一.控制器接收各类请求参数 代码测试环境: 接收各类参数的控制器--ParamsController package com.ssm.chapter15.controller; @Controller ...

  9. centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解

    centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解 环境准备: 操作系统:centos ...

随机推荐

  1. [Linq Expression]练习自己写绑定

    源代码:TypeMapper.zip 背景 项目中,我们会经常用到各种赋值语句,比如把模型的属性赋值给UI,把视图模型的属性拷贝给Entity.如果模型属性太多,赋值也会变成苦力活.所以,框架编程的思 ...

  2. 63.Assignment to name ignored, since the identifier is never used

    在文件中单独定义一些信号变量,如start_flag,即使进行(*KEEP=“TRUE”*)的声明,但在cdc文件上依然找不到start_flag变量,这是为什么呢?因为ISE综合器非常聪明,对一些没 ...

  3. Mono for Android (4)-- 图片转为二进制,二进制转回图片

    最近纠结蓝牙打印的问题,想着图片先转为二进制发给打印机,找了好多资料,终于成功了,贴出来共享一下 先是图片转换为二进制的: Bitmap bitmap = BitmapFactory.DecodeRe ...

  4. java中字符串String 转 int(转)

    java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...

  5. c++ goto的使用

    c++ goto 语句的使用 1.定义一个类似标签的东西lable 2.使用goto关键字,跳转到lable, goto lable #include <iostream> #includ ...

  6. 结队开发项目——基于Android的无线点餐系统——NABC模型

    特点:通过提前订餐,可以节约学生大量的排队时间. N(need):生活中可以发现许多同学都喜欢出去买饭,而且在有的摊位需要排很长时间的队,这样他们就会很晚吃到饭,下午有课的学生都不能睡午觉,所以通过我 ...

  7. 点亮led【转载】

    http://linux-sunxi.org/Cubieboard/Programming/StatusLEDs Accessing the status LEDs The Cubieboard ha ...

  8. IT服务系统组成

    软件+硬件+数据 + 运维人员 = IT服务系统 车 司机 乘客 修车 = 车模式 效率 系统 用户 业务 运维 = 信息化 效率 如果司机不会开车,没有人会修车就不会有车轮上的世界 同样没有人会运维 ...

  9. 项目部署之VPN+端口映射

    背景:出差开发项目,需要在客户那里部署基本成型的系统.这套系统需要一个公网的ip地址(一个后台管理系统,使用花生壳提供域名服务.一个公网的tcp server,java io实现),但是客户那里无法提 ...

  10. XStream使用详解

    1.Xstream介绍 (1)Xstream介绍     Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需 ...