Java Spring 整合 mybatis + springmvc

本文详细介绍了如何使用XML+注解的方式整合Java Spring、Mybatis和SpringMVC。从创建数据库、项目搭建到配置各个组件,包括数据库连接池、Service层、DAO层、Controller层,以及Spring的事务管理。通过一步步的指导,帮助读者掌握SSM框架的整合技巧。

Java Spring 整合 mybatis + springmvc

要求: 以下内容需要有javaEE spring springmvc 和mybatis mysql数据库 等知识点的学习基础

1:搭建整合环境

1 整合说明:SSM整合可以使用多种方式 本次我们使用XML+注解的方式

2: 整合的思路:

1: 先搭建整合的环境
2: 先把spring的配置搭建完成
3: 再使用spring整合SpringMVC框架
4: 最后使用Spring整合Mybatis框架

SSM框架结构

首先创建数据库 (本次使用MySQL数据库)

数据库表

第二步 创建项目 导入pom文件

创建项目
接着起一个项目名(随意看自己心情)
项目名
选择好自己的maven配置信息所在目录 和仓库地址 然后 将 下面的name 和value添加到下方(可以减少大量依赖导入的时间)
在这里插入图片描述
(Name: archetypeCatalog
Value: internal)
然后导入pom文件

我的pom如下:

<!--ssm整合maven-->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.1</version>
    </dependency>
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.13</version>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.19.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.2.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>

    <!--    C3P0jar包-->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
    </dependency>
    <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
      <version>1.9</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.4.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.4.1</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.jdom/jdom -->
    <dependency>
      <groupId>org.jdom</groupId>
      <artifactId>jdom</artifactId>
      <version>1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core -->
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
      <version>1.1</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>


    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->

    <!--jsr 303数据效验三个包-->
    <dependency>
      <groupId>org.jboss.logging</groupId>
      <artifactId>jboss-logging</artifactId>
      <version>3.3.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>6.0.10.Final</version>
    </dependency>
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>2.0.0.Final</version>
    </dependency>

    <!--上传文件三个包-->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!--生成随机数-->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.6</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.0.6.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>2.5.0</version>
    </dependency>

    <!--json对象-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>

    <!--FreeMarkerViewResolver视图解析器需要下面两包-->
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.28</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.0.4.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2.1-b03</version>
      <scope>provided</scope>
    </dependency>

<!--    分页插件-->

    <dependency>
           <groupId>com.github.pagehelper</groupId>
           <artifactId>pagehelper</artifactId>
          <version>5.0.0</version>
      </dependency>

第三步: 创建java文件夹和 resources文件夹 并在java文件夹中创建好domain dao service和controller四个文件夹三层架构和javabean

在这里插入图片描述

第四步 创建accout类(数据库的关联类)

在这里插入图片描述

第五步: 创建 dao持久层的接口 提供两个方法 查询所有和 保存单个账户

在这里插入图片描述

第六步: 由于使用了mybatis框架 所以无需自己写dao层的实现类 所以 直接写service层的接口即可

在这里插入图片描述

第七步; 创建Service层实现类 按照标准三层架构写在impl子包下 (此时的mybatis未配置 暂时以sout代替)

在这里插入图片描述

第八步 创建web层控制类:

在这里插入图片描述

下面进行Spring环境的搭建和配置

使用注解的方式将所有的bean使用SpringIOC 的方式 进行实现 所以要创建一个spring的配置文件 开启包的扫描

第九步: 在resource文件夹下创建spring的配置文件

起名规范

applicationContext.xml 将配置文件的约束补充完整(一般为固定格式可直接粘贴) 并且开启注解扫描命令<context:compoment scan> 由于controller类不需要spring进行扫描所以 在此标签内 配置controller注解不扫描(固定格式直接粘贴即可)
在这里插入图片描述

第十步:将service实现类加入IOC注解 并测试Spring模块是否可用

在这里插入图片描述
在这里插入图片描述
发现此时出现了log4j的警告信息 提示没有log4j的配置文件 此时可以直接导入一个到resource文件夹即可

在这里插入图片描述

接下来进行springmvc框架的整合:

十一步: 在web.xml中配置springmvc的前端控制器和中文过滤器

创建springmvc.xml文件 导入头文件信息并开启注解扫描(只扫描controller包) 配置视图解析器 和 注解支持(mvc)
在这里插入图片描述
配置完成之后 进行测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接下来使用spring来整合springmvc

整合原理:

springmvc的整合原理

第十二步:在web.xml中配置spring的监听器:

(由于此监听器默认只加载WEB-INF目录下的applicationcontext.xml配置文件 因此需要额外做一些参数的配置)

在这里插入图片描述

接着进行测试: 在controller类中 书写添加service接口对象 使用IOC 依赖注入 测试方法
在这里插入图片描述
测试结果:
在这里插入图片描述

接着进行mybatis框架的整合(注解方式整合):

第十三步: 在dao层接口上 使用注解进行sql语句的配置(select注解,Insert注解)

在这里插入图片描述

第十四步: 建立mybatis的根配置文件SqlMapConfig.xml (基本固定格式)

在这里插入图片描述

接着进行测试:(Test包下的mybatistest类中测试)

在这里插入图片描述
测试结果:
在这里插入图片描述

再测试一下save方法(由于还没写spring事务控制 所以需要手动提交事务)

在这里插入图片描述

接下来使用spring来对mybatis进行整合:

思路:将mybatis 为DAO生成的代理对象 存到Spring的IOC中 (因为service实现类已经存入了Spring的IOC)
Spring整合mybatis框架
在spring的配置文件applicationcontext.xml中配置

步骤1: 配置连接池 (配置C3P0连接池 bean标签)(这里的c3p0是最简单的配置!)

在这里插入图片描述

步骤2: 配置SqlSessionFactory工厂(bean标签配置 并配置依赖DataSource 引入c3p0连接池的DataSource对象即可)

在这里插入图片描述

步骤3: 配置DAO接口所在的包 (bean标签 配置依赖 basePackage dao接口包名)

在这里插入图片描述
此时呢SqlmapConfig.xml文件就没有了他的价值 可以直接删除 因为mybatis的所有工作都已经交给了spring框架解决

最后在dao层接口上加上注解@repository 交给spring容器管理

在这里插入图片描述

接着在Service层实现类中注入 dao层接口 并使用注解注入 接着将方法实现即可

在这里插入图片描述

最后进行一个测试 前台调用 查询所有方法 后台获取数据 发送给 新页面进行数据的显示

前台:

在这里插入图片描述

后台:(控制类)

在这里插入图片描述

返回页面:(使用了jstl表达式 后期会出一篇博客专门讲讲jstl)

在这里插入图片描述
最后 由于save方法目前由于无法自动提交事务 无法测试
因此

最后一步: 配置spring整合mybatis框架的事务管理 配置Spring框架声明式事务管理

1; 配置事务管理器(在applicationconfig.xml中)

在这里插入图片描述

2 配置事务通知

在这里插入图片描述

3:配置AOP增强

在这里插入图片描述
接着进行最后的测试:

前台:

在这里插入图片描述

后台:

在这里插入图片描述
到这里: SSM的整合就全部结束了 接下来我们总结一下步骤:

SSM 整合 顺序

配置spring -> 测试spring -> 配置springmvc ->测试springmvc -> spring整合springmvc -> 配置mybatis -> 测试mybatis ->spring整合mybatis -> 整合mybatis的事务控制 ->总测试

最后给大家的小建议: 业精于勤荒于嬉 只有多练习才能过目而不忘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值