spring mvc高级篇(四):Spring+SpringMVC+Mybatis整合(采用注解优化)

4.1注解配置简介

注释配置相对于 XML 配置具有很多的优势: 

(1)它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。 

(2)注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 

因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。但是大量使用注解会影响项目后期维护,因为只要改了一点点配置,就要修改源代码,整个项目需要重新编译再上线。那么,到底是使用注释配置还是XML 配置呢?这就要取决于整个项目的取舍。

 

4.2整合思路分析

用Spring对MyBatis进行整合,将使得采用MyBatis操作数据库更加方便和简单。由于Spring 3的开发在MyBatis 3官方发布前就结束了,Spring开发团队不想发布一个基于非发布版本的MyBatis的整合支持,因此Spring 3没有提供对MyBatis3的支持。为了使Spring 3支持MyBatis 3,MyBatis团队开发出整合类,让开发者直接在Spring中使用MyBatis。

 

4.3 Spring和MyBatis整合核心类的介绍

在使用MyBatis-Spring整合之前,我们需要先下载相应的整合JAR包。在MyBatis的官方网站( http://code.google.com/p/mybatis/)上,找到MyBatis Integration,下载整合需要的mybatis-spring-1.2.0-bundle.zip,下载并解压后的目录如下图所示。整合时,在工程中只要包含mybatis-spring-1.2.0.jar就可以了。

MyBatis-Spring包的目录结构

要在Spring中使用MyBatis,需要在Spring的配置文件中定义一些类。下面先了解一下这些核心类。

1. SqlSessionFactoryBean

在MyBatis中,SqlSessionFactory可以使用SqISessionFactoryBuilder来创建,而在MyBatis-Spring中,使用SqISessinFacotryBean来代替,可以直接在Spring通过配置文件的形式配置。

2.MapperFactoryBean

MapperFactoryBean实现了Spring的FactoryBean接口,通过mapperlnterface属性注入接口,将映射接口变成可以注射的Spring Bean。

 

3. SqlSessionTemplate

SqlSessinTemplate类负责管理MyBatis的SqlSession,调用MyBatis的SQL映射语句,轻松实现数据库的访问。SqlSessionTernplate是线程安全的。当调用SQL方法时,包括通过从映射器getMapper()方法返回的映射器的方法,SqlSessionTemplate会保证使用的SqlSession是和当前Spring事务相关联的。此外,它管理会话的生命周期,包括必要的关闭、提交和回滚操作。

 

4.4 开发环境

开发工具:myeclipse8.6.1

数据库:mysql5.5.23

服务器: tomcat6.0.37

框架版本: spring3.2.2+mybatis3.2.2

4.5 案例开发步骤

步骤一:在myeclipse8.6中新建web工程AnnoSMMvc,拷贝如下包到lib目下:

 

代码的目录结构如下图所示:

 

步骤二:编写web.xml 配置文件,代码如下:

=================================web.xml========================

<?xml version="1.0"encoding="UTF-8"?>

<web-app version="2.5"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <!-- 配置统一错误处理页面start -->

  <error-page>

    <error-code>404</error-code>

    <location>/Err404.html</location>

  </error-page>

  <error-page>

    <error-code>500</error-code>

    <location>/Err500.html</location>

  </error-page>

  <!-- 配置统一错误处理页面end -->

 

  <!-- 配置登录验证过滤器start -->

  <filter>

    <filter-name>loginFilter</filter-name>

    <filter-class>com.wx.filters.LoginFilter</filter-class>

    <!-- 不做拦截的请求-->

    <init-param>

         <param-name>exclusions</param-name>

         <param-value>AnnoSMMvc/,.js,.gif,.jpg,.jpeg,.png,.css,.ico,

         Login.jsp,Login.php,Register.jsp,register.php,CheckUser.php,

        ShowOneUser.jsp,ShowResult.jsp,Trans.php,ShowOneUser.php,quit.php

         </param-value>

     </init-param>

  </filter>

  <filter-mapping>

    <filter-name>loginFilter</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

  <!-- 配置登录验证过滤器end -->

 

  <!--druid连接池  config start -->

  <filter>

     <filter-name>DruidWebStatFilter</filter-name>

     <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>

     <init-param>

         <param-name>exclusions</param-name>

         <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>

     </init-param>

  </filter>

  <filter-mapping>

     <filter-name>DruidWebStatFilter</filter-name>

     <url-pattern>/*</url-pattern>

  </filter-mapping>

  <servlet>

        <servlet-name>DruidStatView</servlet-name>

        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

  </servlet>

  <servlet-mapping>

        <servlet-name>DruidStatView</servlet-name>

        <url-pattern>/druid/*</url-pattern>

  </servlet-mapping>

  <!--http://localhost:8080/AnnoSMMvc/druid/index.html    end-->

 

  <!-- 配置spring mvc的字符集过滤  start-->

  <filter>

    <filter-name>encode</filter-name>

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <init-param>

      <param-name>encoding</param-name>

      <param-value>UTF-8</param-value>

    </init-param>

    <init-param

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值