Spring入门二:整合mybatis

一、SM思路分析

1、引入核心依赖及相关依赖:

 spring(略)、mybatis、mysql、mybatis-spring(减少自己实现FactoryBean接口)、druid

2、如何整合?

通过spring框架接管mybatis框架中核心对象的创建

3、mybatis中的核心对象

SqlSessionFactory

4、SM整合实质

通过spring框架接管mybatis中核心的SqlSessionFactory对象的创建。Spring如何管理SqlSessionFactory对象的创建?SqlSessionFactory是一个接口类型的复杂对象。

is=Resource.getResourceAsStrem("mybatis-config.xml);

sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);

1)手动配置:

(0)在类路径下配置mybatis-config.xml的数据源:

1)在spring中可以新建类SqlSessionFactoryBean实现FactoryBean接口

2)工厂管理SqlSessionFactory

3)工厂获取

2)spring自动配置(使用mybatis-spring依赖:Mybatis-spring.jar封装了SqlSessionFactory对象的创建)

0)加入mybatis-spring依赖、druid依赖(简单类型)

1)工厂管理SqlSessionFactory并配置druid数据源对象dataSource

 上述配置每创建一个Mapper文件,需要配置一个array,可以使用mapperLocations配置某个具体类路径下xml的自动扫描。

2)工厂获取

二、DAO层开发

1、建实体类(前提数据库中有表)

2、DAO接口

3、开发mapper(dao的实现类)

4、spring配置文件中注册mapper配置文件

上述配置每创建一个Mapper文件,需要配置一个array,可以使用mapperLocations配置某个具体类路径下xml的自动扫描(见上)。

5、启动工厂获SqlSessionfactory

1)手动获取DAO:

 2)使用MapperFactoryBean获取DAO:

1)在MapperFactoryBean中注入SqlSessionFactory和Dao路径

 上述配置每创建一个Dao组件类,需要配置一个bean,可以使用MapperScannerConfigurer配置某个具体累计下dao的自动扫描

 2)调用bean

三、Service层事务控制

在上述dao的基础上:

1、常规做法(使用默认的事务)

1)创建Service及其实现类

 2)在spring配置文件中管理service组件

 3)调用Bean

2、mybatis框架中事物控制分析

SqlSession,提交:sqlSession.commit);回滚:sqlSessioin.rollback();

真正负责数据库事物控制的对象:Connection(java.sql.Connection)对象。

注意:数据源DruidDataSource是一个连接池,里面都是Connection对象。

Connection conn=DruidDataSource().getConnection();

可以在业务层手动注入dataSource对象来控制事务,但是无法保证业务层(Sevice)和Dao事务的连接性。

3、数据源事务管理器:DataSourceTransactionManager

在spring和mybatis框架中提供了一个类DataSourceTransactionManager(数据源事务管理器)来全局创建一个事务管理器,用来统一调度业务层当前线程使用连接对象和DAO层实现连接对象一致。它依赖于数据源。

在spring.xml文件中添加DataSourceTransactionManager的bean。

4、给现有业务层加入事务控制(手动配置事务)

 1)重写service实现类

 2)在spring配置文件的service的bean标签中注入数据源事务管理器

3)调用Bean

四、Service层事务控制优化(自动配置事务)

1、spring中处理事务的两种方式

编程式事务处理:通过在业务层中农注入事务管理器对象,然后通过编码的方式进行事务控制。

声明式事务处理:通过利用aop切面编程进行事务控制,并对事务属性在配置文件中完成细粒度配置。

2、给现有业务层加入事务控制(手动配置事务优化)

开发一个基于事务的通知(环绕通知)TransactionAdvice实现MethodInterceptor。

1)创建环绕通知

2)配置切面

3)使用环绕通知

3、给现有业务层加入事务控制(自动配置事务-使用aop)

 spring框架提供了<tx:advice/>标签,该标签可以根据事务管理器创建一个基于事务环绕通知对象,并对业务层方法进行细粒度事务控制。

 1)在spring配置文件中加入声明式事务管理

2)配置切面

 3)重写service实现类

4、给现有业务层加入事务控制(自动配置事务-开启注解式事务驱动管理器)

1)在spring配置文件中加入tx:annotation-driven,这样就不要<tx:advice/>和<aop:config>,可以直接使用注解@Transactional

2)重写service实现类

 

 注:
也可以使用easycode直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码。
 
posted @   权杖攻城狮  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
历史上的今天:
2016-03-25 ORACLE之表
2016-03-25 ORACLE之PACKAGE-游标变量
点击右上角即可分享
微信分享提示

目录导航