IDEA整合Maven+SSM框架

本文详细介绍了如何整合Spring、SpringMVC和MyBatis(SSM)框架,从环境准备、各框架代码编写到整合过程中的问题及解决方案,包括数据库配置、实体类、DAO和服务层的编写,以及Spring和MyBatis的配置。在整合过程中,作者强调了配置文件的重要性,特别是MyBatis的配置文件和映射文件,以及解决数据库连接和版本匹配问题的经验。
摘要由CSDN通过智能技术生成

在之前我们分别学习了 Spring、Spring 和 MyBatis 这三部分内容,这三个框架连接起来就是 SSM。

1、SSM 整合的思路

SSM 由三部分组成,所以看起来它们的连接有点复杂,但是 Spring 和 SpringMVC 属于一个生态环境。所以 Spring 和 SpringMVC 可以无缝连接,我们主要将 Spring 和 MyBatis 进行整合。

  • 首先我们要先搭建整合的环境
  • 然后搭建 Spring 环境
  • 再使用Spring整合SpringMVC框架
  • 之后使用Spring整合MyBatis框架

2、环境准备

想要创建一个 SSM 项目,我们先要进行一些准备工作,例如数据库的创建,项目的创建,实体类的编写和 dao 层 service 层的编写等等。

  1. 创建数据库:
    在这里插入图片描述

  2. 创建项目后进行实体类的编写:

    在这里插入图片描述

  3. Dao 层的编写:
    在这里插入图片描述

  4. Service 层的编写:
    在这里插入图片描述

  5. Service 层实现类的编写:
    在这里插入图片描述

我们省略了 Dao 层的实现类,是因为在之后由 MyBatis 的映射文件代替,所以这里直接省略。

3、Spring框架代码的编写

  1. 引入涉及的 jar 包:SSM 涉及的所有 jar 一次性全部引用,通过在 pow.xml 文件中直接导入 Maven 坐标:
    在这里插入图片描述

  2. 修改 Service 层实现类的代码:主要给 Service 层实现类的控制权交给 Spring 框架。
    在这里插入图片描述

  3. 编写 Spring 的配置文件 :在resources资源文件中创建 applicationContext.xml 的配置文件,并写入一下内容。配置文件的整合都是在这个文件进行的,会在这个文件内引入其他的配置文件。
    在这里插入图片描述

4、SpringMVC框架代码的编写

  1. 修改 Service 层实现类代码: 在这里插入图片描述

  2. 编写 Controller 类代码:
    在这里插入图片描述

  3. 编写 SpringMVC 的配置文件:
    在这里插入图片描述

  4. 在web.xml中配置前端控制器:DispatcherServlet 前端控制器是 SpringMVC的关键,我们需要在web.xml配置文件中进行配置
    在这里插入图片描述

  5. SpringMVC与Spring整合:将上述所有过程,只是编写了Spring 和 SpringMVC 的代码,并没有将其整合在一起。在 web.xml 配置文件中使用 SpringMVC 提供的监听器类加载 spring 配置文件
    在这里插入图片描述

  6. 配置乱码过滤器:在 web.xml 配置 Spring 提供的乱码过滤器。
    在这里插入图片描述

  7. 修改 Spring 配置文件:在 applicationContext.xml 配置文件中,配置过组件扫描,扫描的是包下的全部内容,但是为了区分配置文件,我们将 SpringMVC 的包扫描交由 SpringMVC 去配置。
    在这里插入图片描述

通过上述几个步骤,我们将 SpringMVC与Spring整合已经整合完毕。但是在 SpringMVC 中还可以添加异常处理器,那些配置都需要在 SpringMVC 的配置文件中进行配置。

5、MyBatis框架代码的编写

因为在开始已经引入了全部 jar 包,这里不在引用所需要的资源包。

  1. 修改 Dao 层接口的名称:将 Dao 层原先以 Dao 为后缀的接口全部改为以 Mapper 为后缀,Dao 层的包名也可以修改。
    在这里插入图片描述

  2. 创建 MyBatis 的配置文件:在单独使用 MyBatis 时,MyBatis 的配置文件需要配置很多内容。但是在 ssm 中,很多配置会通过 Spring 配置文件进行配置。
    在这里插入图片描述

  3. 创建 MyBatis 的映射文件:
    在这里插入图片描述

  4. 在 Spring 中配置数据库连接池:在单独使用 MyBatis 时,我们通过environments元素定义数据源,而在 ssm 中,我们可以通过 Spring 的配置文件配置数据源。
    在这里插入图片描述

  5. 在Spring 中配置 SqlSessionFactory 工厂:在单独使用 MyBatis 时,我们通过代码创建 SqlSessionFactory 对象,而在 ssm 中,我们可以通过 Spring 的配置文件配置 SqlSessionFactory 对象。
    在这里插入图片描述

  6. 在Spring 中配置映射文件地址:在单独使用 MyBatis 时,我们通过mappers元素配置映射文件,而在 ssm 中,我们可以通过 Spring 的配置文件配置映射文件。
    在这里插入图片描述

  7. 修改 Spring 的配置文件:本来 Spring 和 MyBatis 的整合代码要在 applicationContext.xml 配置文件中编写,但是为了区分 Spring 和 MyBatis 的配置内容,将 MyBatis 的配置内容提取出来。
    在这里插入图片描述

6、整合过程中的踩雷

ssm 的整合历经近十个小时,遇见各种各样的问题,下面就我遇到的问题做过总结。

<!--配置sessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     <property name="dataSource" ref="dataSource"></property>
     <!--加载mybatis核心文件-->
     <property name="configLocation" value="classpath:conf/mybatis_config.xml"></property>
     <!--加载mybatis映射文件-->
     <property name="mapperLocations" value="classpath:com/itlong/Mapper/*.xml"/>
</bean>

<!--扫描mapper所在的包 为 mapper 创建实现类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     <property name="basePackage" value="com.itlong.Dao"></property>
</bean>

这段配置主要用于将 Spring 和 MyBatis 进行整合,特别需要注意的是

  • <property name="configLocation" value="classpath:conf/mybatis_config.xml"></property>:这段配置主要是指定 MyBatis 的配置文件
  • <property name="mapperLocations" value="classpath:com/itlong/Mapper/*.xml"/>:这段配置主要是指定 MyBatis 的映射文件
  • <property name="basePackage" value="com.itlong.Dao">:这段配置是指定 Dao 层接口所在的报名,Dao 层包可能会修改为 Mapper 包名,但是不管怎么修改包名,记住basePackage属性是定义接口的报名
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itlong.Dao.UserMapper">
    
    <!-- 根据 id 查询用户信息 User selectByID(int id); -->
    <select id="selectByID" resultType="user">
        select * from user where id = #{id}
    </select>
</mapper>

这段代码的映射文件,特别需要注意的是:

  • namespace="com.itlong.Dao.UserMapper":属性值一定要和接口的全限定名一致。例如,假设 UserDao(或者 UserMapper) 接口存放在 com.XXX.Dao(或者 com.XXX.Mapper) 包下,那么这里的属性值就是一定是 com.XXX.Dao.UserDao(或者 com.XXX.Mapper.UserMapper)
  • 映射文件存放的地址:最后在映射文件存放在目标的 resources 资源文件夹下,并将映射文件存放在com.XXX.Mapper包下。

在使用 c3p0 数据源时,遇到如下问题:

在这里插入图片描述
在解决这个问题时,我查阅了大大小小的博客,最后的解决方案是在jdbc 的资源文件中添加useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC和每个属性名前添加jdbc.

#我们定义一个 jdbc.properties 资源文件
#useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

3.2.8
在解决完数据库连接问题,在具体调用映射语句有遇到报错:
在这里插入图片描述
这个报错是因为 mysql 驱动和 MyBatis 驱动两个包的版本不匹配,需要寻找对应版本。

上述问题是博主进行整合遇到的问题,一些解决方案只适用于本人。

附具体代码项目资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值