热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Spring】整合mybatisspring

整合mybatis-springpow.xmlorg.mybatis

整合 mybatis-spring

pow.xml

<dependencies><dependency><groupId>org.mybatisgroupId><artifactId>mybatisartifactId><version>3.5.5version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>5.1.30version><scope>runtimescope>dependency><dependency><groupId>org.projectlombokgroupId><artifactId>lombokartifactId><version>1.18.12version>dependency><dependency><groupId>junitgroupId><artifactId>junitartifactId><version>4.11version><scope>testscope>dependency><dependency><groupId>log4jgroupId><artifactId>log4jartifactId><version>1.2.17version>dependency><dependency><groupId>org.aspectjgroupId><artifactId>aspectjweaverartifactId><version>1.9.5version>dependency><dependency><groupId>org.mybatisgroupId><artifactId>mybatis-springartifactId><version>2.0.5version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-aopartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-contextartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-ormartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-oxmartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-jdbcartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-txartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webmvcartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-aopartifactId><version>5.2.7.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-testartifactId><version>5.2.7.RELEASEversion>dependency>dependencies>

1.编写数据源配置
2.sqlSessionFactory
3.sqlSessionFactoryTemplate
4.需要给接口加实现类【可以充当service层】
5.将自己写的实现类注入到spring中
6.测试使用

spring-dao.xml
配置数据源、sqlSessionFactory、sqlSessionFactoryTemplate


<beans xmlns&#61;"http://www.springframework.org/schema/beans"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xmlns:aop&#61;"http://www.springframework.org/schema/aop"xmlns:tx&#61;"http://www.springframework.org/schema/tx"xmlns:context&#61;"http://www.springframework.org/schema/context"xsi:schemaLocation&#61;"http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><bean id&#61;"ds" class&#61;"org.springframework.jdbc.datasource.DriverManagerDataSource"><property name&#61;"driverClassName" value&#61;"com.mysql.jdbc.Driver"/><property name&#61;"url" value&#61;"jdbc:mysql://localhost:3306/mybatis"/><property name&#61;"username" value&#61;"root"/><property name&#61;"password" value&#61;"root"/>bean><bean id&#61;"sessionFactory" class&#61;"org.mybatis.spring.SqlSessionFactoryBean"><property name&#61;"dataSource" ref&#61;"ds">property><property name&#61;"configLocation" value&#61;"mybatis-config.xml" /><property name&#61;"mapperLocations" value&#61;"com/wei/dao/*Mapper.xml"/>bean><bean id&#61;"sqlSession" class&#61;"org.mybatis.spring.SqlSessionTemplate"><constructor-arg index&#61;"0" ref&#61;"sessionFactory" />bean>
beans>

applicationContext.xml
导入子配置文件&#xff0c;并注入实现类到spring


<beans xmlns&#61;"http://www.springframework.org/schema/beans"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xmlns:aop&#61;"http://www.springframework.org/schema/aop"xsi:schemaLocation&#61;"http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsd"><import resource&#61;"classpath:spring-dao.xml" /><bean id&#61;"userMapper" class&#61;"com.wei.dao.UserMapperImpl"><property name&#61;"sqlSession" ref&#61;"sqlSession" />bean>
beans>

添加实现类UserMapperImpl.class

public class UserMapperImpl implements UserMapper {private SqlSessionTemplate sqlSession;public void setSqlSession(SqlSessionTemplate sqlSession){this.sqlSession &#61; sqlSession;}&#64;Overridepublic List<User> findAll() {return sqlSession.getMapper(UserMapper.class).findAll();}
}

spring声明式事务


事务四大特性ACID


  1. 原子性&#xff1a;事务要么都成功&#xff0c;要么都失败。
  2. 一致性&#xff1a;事务前后&#xff0c;保证业务的一致性。不会出现数据的损坏。
  3. 隔离性&#xff1a;并发操作应该隔离开&#xff0c;防止数据损坏。
  4. 持久化&#xff1a;事务一旦提交成功&#xff0c;无论出现什么错误&#xff0c;结果都不会被影响&#xff0c;被持久化写到存储器中。

事务的7种传播行为


  • 事务传播行为&#xff08;propagation behavior&#xff09;指的就是当一个事务方法被另一个事务方法调用时&#xff0c;这个事务方法应该如何进行。

在这里插入图片描述

参考优秀文章 &#xff1a;事务属性之7种传播行为 https://blog.csdn.net/soonfly/article/details/70305683


结合AOP实现事务的织入


  • 保证一个业务的前后的一致性。不会因为错误而改变了只运行一半的数据。

配置在spring-dao下

<bean id&#61;"transactionManager" class&#61;"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name&#61;"dataSource" ref&#61;"ds" />bean><tx:advice id&#61;"txAdvice" transaction-manager&#61;"transactionManager"><tx:attributes><tx:method name&#61;"add" propagation&#61;"REQUIRED"/><tx:method name&#61;"delete" propagation&#61;"REQUIRED"/><tx:method name&#61;"update" propagation&#61;"REQUIRED"/><tx:method name&#61;"query" read-only&#61;"true"/><tx:method name&#61;"*" propagation&#61;"REQUIRED" />tx:attributes>tx:advice><aop:config><aop:pointcut id&#61;"txPointCut" expression&#61;"execution(* com.wei3.mapper.*.*(..))"/><aop:advisor advice-ref&#61;"txAdvice" pointcut-ref&#61;"txPointCut"/>aop:config>

推荐阅读
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • 在实际开发中,连接池是最常使用的数据库管理技术之一。连接池通过创建和管理一组预初始化的数据库连接,使得这些连接可以被多个线程复用,从而显著提高应用程序的性能和资源利用率。本文将详细介绍如何从零开始构建一个自定义的 MySQL 连接池,并将其与 Spring Data 进行集成,以实现高效、可靠的数据库操作。 ... [详细]
author-avatar
风中冰雨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有