SSM整合
四、SSM整合
4.1、ContextLoaderListener
- Spring提供了监听器ContextLoaderListener,实现ServletContextListener接口,可监听ServletContext的状态,
- 在web服务器的启动,读取Spring的配置文件,创建Spring的IOC容器。web应用中必须在web.xml中配置
- spring中的IOC容器无法访问springmvc的IOC容器,springmvc是子容器,可以访问spring的IOC容器(父容器)
1 | <!-- 设置监听器--> |
4.2、准备工作
1>创建Maven Module
2>添加web模块
3>导入依赖
pom.xml
1 |
|
4>创建表
1 | CREATE TABLE `t_emp` ( |
用的之前的表
4.3、配置web.xml
清单:
- 两个过滤器 :
CharacterEncodingFilter
: 配置编码过滤器HiddenHttpMethodFilter
: 配置处理请求方式的过滤器
- 一个前端控制器
DispatcherServlet
- spring的监听器
- 在服务器启动时来加载spring的配置文件 来获取IOC容器
- 指定spring配置文件位置的标签
<context-param>
标签
1 |
|
4.4、配置SpringMVC的配置文件
springMVC.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
4.5、搭建MyBatis环境
1>创建属性文件jdbc.properties
- 最后将数据源交给spring管理
1 | jdbc.user=root |
2>创建MyBatis的核心配置文件mybatis-config.xml
1 |
|
3>创建Mapper接口和映射文件
1 | /** |
配置文件
1 |
|
4>创建日志文件log4j.xml
1 |
|
4.6、配置Spring的配置文件
1>配置数据源
1 | <!--引入jdbc.properties --> |
2>在spring中配置SqlSessionFactoryBean
- 配置SqlSessionFactoryBean:用来可以直接工程bean提供的对象,可以直接在spring的IOC中获取SqlSessionFactory对象
在service层中自动装配:
1 |
|
配置bean
1 | <!--配置SqlSessionFactoryBean:用来可以直接工程bean提供的对象,可以直接在spring的IOC中获取SqlSessionFactory对象--> |
- 这个bean 为我们提供SqlSession对象 ,之前的创建很麻烦
1 |
|
利用这个bean 的诸多属性,可以代替
mybatis-config.xml
1 | public class SqlSessionFactoryBean implements |
3>配置mapper扫描
- 把当前设置的包下面的所有的mapper接口通过上面的SqlSessionFactory所创建的SqlSession,通过这些SqlSession来创建设置的包下面所有接口的代理实现类对象,并且将这些对象交给IOC管理
- 可以直接在service层自动装配对
1 | <!-- 配置mapper扫描--> |
EmpService.java
1 |
|
4>配置事务管理
@Transactional
注解在代码执行出错的时候能够进行事务的回滚。
1 | <!--配置事务管理器--> |
- 开启事务注解驱动:将使用注解
@Transactional
标识的方法或类中的所有方法进行事务管理
5>完整配置文件
- 使用spring替代了mybatis的配置文件的部分功能
- 复杂的最好还是在mybatis的配置文件中写
1 |
|
4.7、功能测试
分页插件pagehelper
1 | limit index,pageSize |
使用步骤
1>添加依赖
1 | <dependency> |
2>配置分页插件
在MyBatis的核心配置文件中配置插件
1 | <plugins> |
分页插件的使用
1>PageHelper.startPage(int pageNum, int pageSize)
pageNum:当前页的页码
pageSize:每页显示的条数
2>PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages)
-
在查询获取list集合之后,使用
PageInfo<T> pageInfo = new PageInfo<>(List<T> list, intnavigatePages)
获取分页相关数据
list:分页之后的数据
navigatePages:导航分页的页码数
3>分页相关数据
1 | PageInfo{ |
代码
controller
1 | package pers.dhx_.controller; |
Mapper
- EmpMapper
1 | package pers.dhx_.mapper; |
pojo
- Emp
1 | package pers.dhx_.pojo; |
service
- EmpService
- impl
- EmpServiceImpl
EmpService
1 | package pers.dhx_.service; |
EmpServiceImpl
1 | package pers.dhx_.service.impl; |
index.html
1 |
|
employee_list.html
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dhx_'blog!
评论