Spring+Mybatis整合核心知识

Spring+Mybatis整合核心知识点

1、Spring如何与Mybatis整合?

(1)配置数据源

(2配置SqlSessionFactory

(3)配置Dao

(4)配置Service

代码案例:

  • 配置DataSources(数据源,连接池)
<!--所需依赖:1、driverClassName 2、url 3、username 4、password-->
<bean class="DruidDataSource" id="dataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value=""></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
  • 配置SqlSessionFactory
<!--1、依赖数据源 2、依赖于mapper文件(是路径用/)-->
<bean class="SqlSessionFactoryBeanName" id="sqlSessionFactory">
<property name="dataSource" rel="dataSource"></property>
<property name="mapperLocations" value="com/tjcu/mapper/*Mapper.xml"></property>
</bean>
  • 配置管理dao层(mappeScannerConfigurer:映射扫描仪配置)
<!--1、dao的包 2、依赖于sqlSessionFactory mapperScannerConfigurer配置的时候默认实体类别名:首字母小写 -->
<bean class="mapperScannerConfigurer">
<property name="sqlSessionFactory" rel="sqlSessionFactory"></property>
<property name="basePackage" value="com.tjcu.dao">
</bean>
  • 配置管理Service层
<!--依赖 1、dao层-->
<bean class="com.tjcu.service.UserServiceImpl" id=userService>
<propertry name="userDao" rel="userDao"></property>
</bean>

2、如何在Spring中进行事务控制?

(1)配置事务管理器(DataSourceTransactionManager)

(2)配置事务通知+事务属性+事务隔离级别

(3)配置切入点

(4)组装切面

代码案例:

  • 配置事务管理器
<!--依赖于:1、事务源-->
<bean class="dataSourceTransactionManager" id="transactionManager">
<property name="dataSource" rel="dataSource"></property>
</bean>
  • 配置事务通知+事务属性
<tx:advice id="txAdvice" transaction-manager="transactionManager">
   <tx:attributes>
         <tx:method name="insert*" propagration="REQUIRED" read-only="true"></tx:method>
   <tx:method name="update" propagration="REQUIRTED" read-only="true"></tx:method>
   <tx:method name="select*" propagration="SUPPORTS"></tx:method>
   </tx:attributes>
</tx:advice>>
  • 配置切入点
<aop:configur>
<aop:pointcut id="pointcut" value="execution(* com.tjcu.*ServiceImpl.*(..))"><aop:pointcut>
</aop:configur>
  • 组装切面
<aop:configur>
<aop:advisor advice-rel="txAdvice" pointcut-rel="pointcut"></aop:advisor>
</aop:configur>

  • spring整合Mybatis标准开发步骤(DAO层+Service层)
    在这里插入图片描述

3、常见的数据库隔离级别有哪些 以及 分别解决什么问题?

(1)数据库事务隔离级别:

解决事务并发时存在 如:藏独,不可重复读,幻读的情况

(2)隔离级别
  • read_UnCommitted:已未提交事务:出现脏读,一个客户端添加某个数据,还没提交,另外的客户端就可以读到未提交的事务,会脏读

  • read_committed:读已提交,Oracle的默认事务隔离级别,解决脏读问题,一个客户端添加某个数据,还没提交,另外的客户端不能读到未提交的事务

  • repeatable:可重复读,解决事务的脏读和不可重复读问题,mysql默认的事务隔离级别

  • serializable:序列化读

(3)幻影读

幻影读:一个事务添加数据,另一事务对表中的数据进行多次查询,但查询的结果不一致。

4、Spring中的事务传播性解决什么问题 及 常见取值的区别是什么?

(1)概念

    事务的传播性,解决因事务嵌套 而导致事务没法控制的问题。

(2)常用取值及区别
  1. REQUIRED

    含义:如果外部没有事务,则开启新的事务;如果外部存在事务,则融合到外部的事务中。

    开发中的使用:添加、修改、删除 时使用。

  1. SUPPORTS

含义:如果外部没有事务,则不开启事务;如果外部存在事务,则融合到外部的事务中。

    开发中的使用:查询 时使用。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小王java

学习java的路上,加油!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值