MyBatis系列八 MyBatis-Spring(下)

三、实例

 

  由于MyBatis-Spring的广泛应用,所以本书给出实例,希望给大家一个参考。这里我们 采用目前使用最为广泛的Spring MVC框架,使用Eclipse+Tomcat8+MySQL作为开发环境。

1、环境准备

  首先,启动MySQL数据库,新建数据库表,如代码清单8.23所示。

代码清单8-23新建数据库表

CREATE TABLE t_role (
id int(11) NOT NULL AUTO_INCREMENT,
role_name varchar(60) NOT NULL,
create_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, note varchar(512) DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE t_user (
id int (11) NOT NULL AUTO_INCREMENT,
user_name varchar(60) NOT NULL,
birthday date NOT NULL,
sex varchar(2) NOT NULL,
mobile varchar(20) NOT NULL,
email varchar(60) DEFAULT NULL,
note varchar(512) DEFAULT NULL,
PRIMARY KEY (id)
);

  然后,我们配置Tomcat的数据源,在Eclipse里面配置好了 Tomcat后,我们可以看到 Eclipse的Servers文件目录下的配置文件,如图8.4所示。

 

 

   其中,context.xml的作用主要是配置JNDI数据源。现在我们配置一下数据源,如代 码清单8.24所示。

 

 

   这样我们便注册了一个数据库的JNDI到Tomcat中。在Tomcat启动的时候会去连接这 个数据源,建立对应的数据库连接池,只是在启动前我们要保证将数据库连接的jar包放入 Tomcat的lib目录下,它放在Tomcat对应服务器文件夹的对应路径 (tomcat_home}/lib 下。如果在Eclipse下修改它,你无需自己复制,因为Eclipse会自动放在部署的对应目录下。

2、文件目录

  本次所有Spring MVC文件的目录,如图8-5所示。

 

 

   文件比较多,我们用一个表格来详细介绍它们,如表8.7所示。

表8・7 Spring Web文件

文件/包名

功 能

备 注

com.leam.chapter8.controller

Spring MVC的控制器包

com.leam. chapter8.dao

MyBatis的映射器包,里面还包括 映射XML

在MVC框架中常常用于

DAO层

com.Ieam.chapter8.pojo

模型层的POJO包

 

文件/包名

功 能

备 注

com.leam.chapter8.service

定义Service层的接口

com.leam.chapter8.service.impl

Service层接口的实现类

它将实现业务

log4j.properties

配置log4j的文件

可以从第2章看到它

sqlMapConfig.xml

MyBatis的配置文件

applicationContext.xml

Spring的主配置文件

・.

dispatcher-servlet.xml

Spring MVC的配置文件

■ 1

web.xml

Web工程的配置文件

1・

3、Spring配置文件

  我们先看看applicationContext.xml文件,如代码清单8-25所示。

 

  上面注释的描述比较详细,笔者就不再一一介绍了。我们再来看看Spring MVC的配置文件,如代码清单8-26所示它的配置主要服务于Spring MVC 流程。

 

  同样在XML注解中也有比较详细地描述,我们定义了 Spring MVC的视图拦截器,然 后利用JSON转换器将其转换。最后我们看看web.xml文件,如代码清单8.27所示。

 

  这里主要配置了 Spring的DispatcherServlet,让它拦截所有以.do结尾的请求。

4、MyBatis框架相关配置

  我们配置一下MyBatis的文件。首先是sqlMapConfig.xml基础配置文件,如代码清单 8-28所示。

  其次就是两个简单的POJO配置,一个是RoleBean.java,如代码清单8.29所示;一个 UserBean.java,如代码清单8-30所示。

 

 

 

  再次让我们分别提供这两个POJO配置的映射器,如代码清单8.318.32所示。

 

  这样我们就有了两个接口。最后我们需要提供二者的映射规则——XML映射文件,如 代码清单8-33、8-34所示。

 

 

 

这样就配置好了映射文件。

5、配置服务层

   我们首先在配置文件里面配置了注解事务,然后扫描标注Service的JavaBean到Spring 上下文中,方便以后使用。我们先给出Service接口,如代码清单8.35、8・36所示。

 

然后就是实现类,如代码清单8.378.38所示。

 

 

 

 

 

 

注意,在查询方法中,我们加入了下面这行代码。

@Transactional(isolation=Isolation.READ_COMMITTED,propagation=Propagatio n. SUPPORTS)

这便是Spring控制事务的注解,在运行它的时候,釆用隔离性为读写提交的层级,传 播行为为如果有事务就支持,如果没有就不开启。

在更新数据操作里,我们加入了下面这行代码。

@Transactional(isolation=Isolation.READ_COMMITTED,propagation=Propagatio n.REQUIRED)

当没有事务的时候就开启事务,在运行它的时候,釆用隔离性为读写提交的层级,传 播行为为如果当前已经开启了事务,就加入当前事务。

6、编写控制器

  Spring MVC中是通过DispatcherServlet进行分发请求的,在自动扫描的环境中Spring 会将注解了©Controller的类注册为控制器,而将控制器中注解为@RequestMapping中的 value值作为分发路径,以确定请求哪个方法。下面让我们看看控制器,如代码清单8-39 所示。

代码清单 8-39: RoleController.java

package com.learn.chapters.controller;
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;
import org•springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.learn.chapters.pojo.RoleBean;
import com.learn.chapters.service•RoleService; @Controller
public class RoleController ( @Autowired private RoleService roleService = null; @RequestMapping(n/role/getRole") @ResponseBody public RoleBean getRole(@RequestParam(nidn) int id) ( long start = System.currentTimeMillis();   RoleBean role = this•roleService.getRole(id);   long end = System.currentTimeMillis();   System.err.printIn(end - start);   return role; }

  我们获取了一个角色id,通过RoleService找到角色,最后将其返回。由于方法标注了 @ResponseBody,所以返回的角色会被Spring MVC配置的JSON视图拦截器拦截,并将其 转化为JSON。

7、测试

 

 四、总结

   本章主要讲解了 MyBatis和Spring框架的结合。

  从Spring的简易基础开始,主要论述了 Spring提供的IOC容器和AOP编程。我们用 动态代理分析了 AOP运行的原理和过程,在此基础上论述了 AOP是如何管理数据库事务 的。数据库事务是本章的重点。在实际编程中数据库事务和传播行为是常常遇到的情况了, 作为一个开发人员务必要掌握它们。然后,我们讨论了 Spring MVC的基本框架,这是目 前互联网最常用的框架之一,具有很高的使用价值。基于Spring的这些基础,我们讨论了 MyBatis-Spring的内容,让大家看到了如何在Spring环境中完成MyBatis的基础配置、映 射器、SqlSessionTemplate。最后,带领大家做了一个可以运行的MyBatis-Spring实例。

 

 

 

 

 

 

posted @ 2020-09-04 18:29  跃小云  阅读(88)  评论(0编辑  收藏  举报