SpringMVC和MyBatis的整合完成商品列表查询

发布于:2023-01-11 ⋅ 阅读:(395) ⋅ 点赞:(0)

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包即可。

 环境准备

  1. 数据库SQL脚本
  2. 对应的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.javamapper.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映射。

本文含有隐藏内容,请 开通VIP 后查看