在跟B站的狂神学习的时候有一模块是SSM整合的一个小项目,虽然spring、springmvc、mybatis我都学过,但是整合到一起还是思路不清晰,就很懵,整合的一个小项目,让我知道了什么叫配置地狱,就是熟悉又陌生的感觉,现在梳理一下,顺便整理一下思路,希望能有所帮助!
具体代码可以看我的另一篇帖子[https://editor.csdn.net/md?articleId=124505003](https://editor.csdn.net/md?articleId=124505003)
<br>
先来看看需要多少的配置文件:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2171981178554d6cb39182a8853670fa.png)
## 第一、
一个项目前后端,是需要有数据库的,所以我们在这建了一个名字为ssmbuild的数据库,里面有一张名字为books的表,具体如 下图;
![在这里插入图片描述](https://img-blog.csdnimg.cn/fe44b630255c4540a47ffb2a6a289583.png)
建好数据库之后开始**基本环境搭建**
## 第二
新建maven项目,勾选web支持
1. 新建的maven第一步肯定是导入maven依赖,在pom.xml文件中添加依赖!我们在pom.xml
中需要做两件事,一个是导入项目需要的依赖,再一个就是静态资源导出问题的解决办法
- 需要添加的依赖有这些:我们肯定要操作数据库,所以就要有数据库驱动mysql-connector-java、数据库连接池,这里我们用的c3p0,spring-jdbc
- 再就是需要Servlet - JSP相关的servlet-api、jsp-api、jstl
- 因为是ssm整合嘛,所以就需要spring相关的spring-webmvc,mybatis相关的mybatis、mybatis-spring
- 还需要一个测试单元依赖juint
- lombok注解支持(自动生成get、set方法,有参无参构造)
pom.xml中一共有11个依赖(一个项目应该需要的依赖的至少精简依赖)
资源导出问题加上就可以,到这里我们的maven配置就差不多了
2. 我们要撘环境做项目需要连接上数据库,这里就不多讲述了
3. 现在建立基本结构和配置框架!(建包)
- com.linfeng.pojo(实体类)
- com.linfeng.dao(mapper)(数据访问层)
- com.linfeng.service(业务层)
- com.linfeng.controller(负责请求转发)
## Mybatis层
mybatis层需要什么呢?
**1**、肯定先需要mybatis的配置文件啊,有两个配置文件:db.properties、mybatis-config.xml
- db.properties是java中采用数据库连接池技术完成应用对数据库的操作的配置文件信息的文件。
里面有四项:
设置jdbc驱动包的位置、
设置连接MySQL中的具体数据库和设置是否使用加密连线(useSSL)参数是boolena类型的,还有服务器的时区(serverTimezone)、
再者就是mysql的用户名和密码
- mybatis-config.xml是核心配置文件,里面需要数据源,这里我们跟spring整合了,所以就让spring去做。可以给它起别名typeAliases标签
**2**、配置文件写完就可以在pojo包下建实体类,与数据库中字段名一致,使用注解
@Data
@AllArgsConstructor
@NoArgsConstructor
这里不多讲述
**3**、实体类写好后就要写一些接口,好进行一些操作
在dao包下新建BookMapper接口,实现增删改查,
**4**、接口写好后具体怎么做,在学完mybatis的时候我们就不用自己手动去写,只需要配置mapper.xml文件就可以了,==名字与接口一致==
这个xml有一个重点,==一个mapper绑定一个接口==,然后写增删改查的sql语句
**5**、接口和配置文件都写完之后怎么做?
立马要做的是把这个mapper.xml绑定到mybatis的核心配置文件中去
<mapper class = "路径">
这5步写完dao层,下一步写service层,service层与dao层有什么区别?
**业务是需要跟数据库对应的**,同样是增删改查的接口与实现类,==业务层的实现类需要调用dao层== 所以要组合dao层。
dao层与service层写完了。我们的mybatis底层也就写完了。
简单说pojo层就是对应数据库 的实体类,dao与service对应mvc的module层(数据跟业务)
mybatis层写完第二步就是spring层
<br>
## spring层
首先来想spring层要做什么,怎么做?
spring要整和mybatis,而mybatis我们已经写好了,dao与service,所以就需要有两个xml文件
- spring-dao.xml
- spring-service,xml
先看整和dao层:我们至少要做什么事情?
**1**、关联数据库配置文件
```java
<context:property-placeholder location="classpath:database.properties"/>
```
**2**、连接池
c3p0
**3**、配置sqlsessionFactory,关联Mybatis
```java
<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
```
之前我们还需要注册sqlsessionTemplate,关联sqlsessionFactory,现在我们做一个骚操作:
**4**、**配置dao接口扫描包,动态的实现了dao接口可以直接注入到spring容器中**
```java
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 给出需要扫描Dao接口包 -->
<property name="basePackage" value="com.linfeng.dao"/>
</bean>
```
整和dao层结束,下面来看整和service层
同样道理,整和service要做那些事情?
1、扫描service下的包
2、将我们的所有的业务类注入到spring,可以通过配置或者注解
3、声明式事务配置
## mvc层
至少要配置什么东西?
- 在web.xml中配置DispatchServlet、乱码过滤、启动优先级
配置DispatchServlet时注意几点:有两个属性 <init-param>来保证它绑定我们的配置文件
这个classpath:后的配置文件是总得配置文件applicationContext.xml
<init-param>
<param-name>contextConfigLocation</param-name>
<!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
- 现在来写spring-mvc的配置文件spring-mvc.xml
1、映射器、适配器因为我们用了注解可以省略,所以需要注解驱动,
2、静态资源过滤
3、扫描包:controller
4、视图解析器
Spring配置整合文件
applicationContext.xml
<import resource="spring-dao.xml"/>
<import resource="spring-service.xml"/>
<import resource="spring-mvc.xml"/>
配置文件,暂时结束!
现在看看resources中需要的配置文件有哪些
暂时先结束吧,具体代码实现可以看另一篇博客
https://editor.csdn.net/md?articleId=124505003