SpringMVC+MyBatis的整合架构
表示层最重要的就是如何写你的Controller,3种方式,推荐最后一种,基于注解的方式,Controll里面最重要的逻辑是:把数据转换成Service需要的参数类型,调Service,然后根据Service的返回值,调视图组件。
下图就是典型的分层开发,是目前我们普遍使用的基于MVC思想的分层开发。
该模型优点:架构清晰,有现成的MVC落地的框架供我们使用,而且对于业务逻辑相对简单的项目而言,开发效率非常高。
整合过程:
1、整合DAO层
MyBatis和Spring整合,通过Spring管理Mapper接口
通过Mapper的扫描器自动扫描mapper接口并在Spring中进行注册。
2、整合Service层
通过Spring管理Service接口。
使用配置方式将service接口配置在Spring配置文件中。
实现事务控制。(使用AOP控制事务)
3、整合SpringMVC
由于SpringMVC是Spring的一个模块,不需要整合,只需导入相关jar包即可。
环境准备
- 数据库SQL脚本
- 对应的jar包
Mysql数据库驱动jar包
Mybatis的jar包
Mybatis和Spring的整合包
日志包
数据库连接池的jar包 (c3p0)
Spring 的jar包
(一定要准备aspectjweaver-1.6.12.jar,配置Spring事务的时候要用到,这个包不在Spring 5.0中)
3. 新创建一个Dynamic Web Project:ssmpro
导入相关的jar包
4. 选中工程,创建一个source folder:config
a. 在config中创建连接数据库的配置文件-db.properties
b. 在config中创建log4j日志文件-log4j.properties
c. 在config下创建目录:spring
d. 在config下创建目录:mybatis
配置文件中的内容参考相关项目
5. 创建相关分层的包,工程结构如下图
整合DAO(整合DAO其实就是Spring与MyBatis进行整合)
1. 在mybatis目录中创建MyBatis的配置文件 SqlMapConfig.xml
由于使用Spring和Mybatis的整合包进行全局扫描,这里就不需要配置mapper了,但是必须遵循: mapper.java和mapper.xml同名且在同一个目录中
(注意:根据实际经验,如果不配置别名和mybatis的全局设置,其实这个文件可以不用创建,不影响程序运行。)
2. 创建applicationContext-dao.xml,其中需要配置的内容包括:
a.配置数据源
b.配置sqlSessionFactory
c.配置Mapper扫描器
3. 创建商品实体类(GoodsInfo.java)
4. 创建商品实体的扩展类(GoodsInfoEx.java)
5. 创建商品查询相关的包装类(GoodsInfoQueryVO.java)
6. 创建对应的Mapper接口 GoodsMapper.java
7. 创建商品映射文件 GoodsMapper.xml
整合Service(让Spring管理Service接口)
1. 创建商品对应的Service接口
2. 创建商品Service接口的实现类
3. 在config目录下的spring目录中创建applicationContext-service.xml文件,并配置商品Service实现类。
4. 在config目录下的spring目录中创建applicationContext-transaction.xml文件,采用声明式事务控制
整合SpringMVC
1. 在spring目录下创建springmvc.xml,在其中配置映射器、适配器和视图解析器
注意:
采用注解方式定义了Controller后,还需要在配置文件中配置Controller,如果项目中的Controller较多,那么配置起来非常麻烦,此时可以采用组件扫描方式定义相关的组件,在springmvc.xml中加入如下配置:
<!-- 启用注解扫描,特定包中采用注解方式定义的组件就能加入到spring容器 -->
<context:component-scan base-package="cn.xysfxy.project.controller"></context:component-scan>
采用注解扫描,可以扫描@Controller、@Service、@Component、@Repository标注的组件。
2. 配置前端控制器, 在web.xml中进行配置
3. 编写Controller,采用注解的开发方式
创建商品列表显示的JSP页面
在WEB-INF目录下创建一个JSP目录,在JSP目录下创建一个JSP页面: GoodsList.jsp
加载Spring容器
将mapper、service、controller等配置文件都加载到Spring容器中。采用通配符的方式来加载上述文件,在web.xml中通过监听器的方式加载
附:springmvc和mybatis框架的不同
mybatis是一个持久层框架,是apache下的开源项目,前身是itbatis,是一个不完全的ORM框架,mybatis提供输入和输出的映射,需要程序员自己写sql语句,mybatis重点对
sql语句的灵活操作。
适合用于:需求变化频繁, 数据模型不固定的项目,例如:互联网项目。
springMVC易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。
心得:Spring MVC可以配置多个处理器映射器,前端控制器可以根据url判断,选择正确的处理器映射器进行处理, 前端控制器是DispatcherServlet,需要在web.xml文件中进行配置,最主要的是要配置url pattern ,必须要掌握注解的处理器映射器,实际开发中常用此方式。对标记有@Controller 类中标记有@RequestMapping的方法进行映射,@RequestMapping中定义了url,此方式就避免了在xml文件中配置url和Handler的映射关系。注解的处理器适配器必须与注解的处理器映射器配对使用,而不能使用非注解的映射器。还要掌握注解的处理器定义,实际开发中常用此方式,通过@Controller注解定义,采用的是无侵入式开发方式,一个处理器中可以定义多个方法,每个方法可以通过@RequestMapping进行url映射。