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)常用取值及区别
REQUIRED
含义:如果外部没有事务,则开启新的事务;如果外部存在事务,则融合到外部的事务中。
开发中的使用:添加、修改、删除 时使用。
SUPPORTS
含义:如果外部没有事务,则不开启事务;如果外部存在事务,则融合到外部的事务中。
开发中的使用:查询 时使用。