版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring与MyBatis框架整合思路本节基于教材内容,从整合基础、核心步骤、代码实现到测试验证,全面讲解整合思路,确保掌握数据源配置、SqlSessionFactory构建、事务管理等关键技术。学习目标与知识图谱知识目标理解整合核心原理掌握数据源配置、SqlSessionFactory整合、Mapper接口扫描三大步骤能力目标独立完成Druid数据源配置使用声明式事务管理业务方法整合基础——为何选择Spring+MyBatis?Spring核心IoC容器管理对象生命周期,AOP实现事务、日志等横切关注点。MyBatis核心SQL与Java对象映射,动态SQL适配业务需求。特性单独使用MyBatisSpring+MyBatis整合对象管理手动创建SqlSessionFactorySpringIoC自动注入事务控制手动commit/rollback@Transactional声明式事务代码耦合度DAO层与SqlSession强耦合Mapper与Service解耦SpringMyBatis整合思路——三步骤核心流程核心思路:三配置一扫描01数据源配置Spring托管Druid连接池,替代MyBatisenv配置02SqlSessionFactory整合通过SqlSessionFactoryBean创建核心对象03Mapper扫描MapperScannerConfigurer自动生成代理对象技术组件与配置对应表组件类名作用配置文件DruidDataSource数据库连接池管理applicationContext.xmlSqlSessionFactoryBean创建SqlSessionFactoryspring-dao.xmlMapperScannerConfigurer扫描Mapper接口并注册spring-dao.xml开发环境搭建——准备工作环境准备JDK与IDE:JDK17、IntelliJIDEA2023Maven依赖:Spring-context(6.1.0)、mybatis-spring(3.0.3)、druid(1.2.16)数据库:创建users表,插入测试数据核心依赖代码示例<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.0</version></dependency>数据源配置——Druid连接池Druid配置代码(applicationContext.xml)<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
<propertyname="driverClassName"value="com.mysql.cj.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>
<propertyname="username"value="root"/>
<propertyname="password"value="123456"/>
<propertyname="initialSize"value="5"/>
<propertyname="maxActive"value="20"/></bean>关键参数initialSize:初始连接数maxActive:最大活跃连接数SqlSessionFactory配置——整合核心SqlSessionFactory配置(spring-dao.xml)<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><propertyname="dataSource"ref="dataSource"/><propertyname="mapperLocations"value="classpath:mapper/*.xml"/><propertyname="typeAliasesPackage"value="com.cqcvc.pojo"/></bean>配置说明引用Druid数据源:通过`dataSource`属性将MyBatis与Druid连接池整合。指定mapper路径和实体类包:`mapperLocations`定义SQL映射文件位置,`typeAliasesPackage`简化实体类引用。替代MyBatis原生构建器:`SqlSessionFactoryBean`是MyBatis-Spring提供的工厂类,替代原生`SqlSessionFactoryBuilder`实现与Spring的无缝集成。Mapper接口扫描——自动代理Mapper扫描配置(spring-dao.xml)<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"><propertyname="basePackage"value="com.cqcvc.dao"/><propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/></bean>参数说明basePackage:指定Mapper接口所在的基础包路径。自动代理:Spring会自动为指定包下的所有Mapper接口生成代理对象,并将这些代理对象注入到Service层。实体类与Mapper映射——数据访问层实体类User.java包含id、username、password属性及Getter/Setter、toString方法。UserMapper.xml<mapper
namespace="com.cqcvc.dao.UserMapper"><selectid="findById"parameterType="int"resultType="User">SELECT*FROMusersWHEREid=#{id}</select><selectid="findAll"resultType="User">SELECT*FROMusers</select></mapper>注意:namespace需与接口全路径一致,id对应接口方法名Service层实现——业务逻辑层UserService接口publicinterface
UserService{UserfindById(intid);List<User>findAll();}实现类UserServiceImpl@Servicepublicclass
UserServiceImpl
implements
UserService{@AutowiredprivateUserMapperuserMapper;
@OverridepublicUserfindById(intid){returnuserMapper.findById(id);}
@OverridepublicList<User>findAll(){returnuserMapper.findAll();}}关键点@Service注解用于标识该类为Spring管理的业务逻辑组件。@Autowired注解用于自动注入Spring容器中的UserMapper代理对象,实现依事务管理——声明式事务事务控制代码@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)public
void
updateUser(Useruser)
{userMapper.update(user);if(user.getUsername().isEmpty())thrownewIllegalArgumentException("⽤⼾名不能为空");}关键属性propagation=REQUIRED:
无事务则新建rollbackFor=Exception.class:
指定异常回滚配置提示:需在spring-tx.xml中配置以下内容以启用注解事务:<tx:annotation-driventransaction-manager="transactionManager"/>测试实例——JUnit验证测试类代码@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:spring/applicationContext.xml"})publicclass
MyBatisSpringTest{
@AutowiredprivateUserServiceuserService;
@Test运行结果控制台输出:User{id=1,username='张三',password='123456'}测试通过,表明Spring与MyBatis整合成功!常见问题与解决方案常见问题排查数据源错误:ClassNotFoundException→检查Druid依赖和MySQL驱动版本(8.0.27)Mapper注入失败:NoSuchBeanDefinitionException→确认MapperScannerConfigurer的basePackage正确事务不回滚:异常后数据未回滚→检查@Transactional注解和是否抛出unchecked异常排查流程数据库连接超时→检查MySQL服务和url端口SQL语法错误→开启MyBatis日志(logImpl=STDOUT_LOGGING)总结与思政升华核心步骤回顾环境准备→核心配置(Druid→SqlSessionFactory→Mapper扫描)→代码实现(实体类→Mapper→Service)→测试验证。思政升华技术整合体现“分工协作”工程思想,培养“细节决定成败”职业素养,树立数据安全意识与团队协作精神,遵守开源协议与开发规范。作业布置与拓展练习基础题添加“删除用户”功能,需包含以下内容:UserMapper.x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI在西方经济学中的应用
- 医疗美容主诊医师资格认证制度
- 2026年人教版七年级语文下册第25课《活板》课件
- 2025-2026学年度山东省德州市高一下学期期中考试历史试题(含答案)
- 上海财经大学《运筹学》课件-绪论
- 唐县长古城新区基础设施提升建设项目水土保持方案报告表
- 网络信息安全基础(AIGC版)随堂前测练习题及参考答案 项目1-任务1-前测练习-单选题5
- 基于增材制造的8250吨-年零部件项目环境影响报告表
- 2026阜阳英语面试题及答案
- 2026百盛客服面试题库及答案
- GJB1032A-2020 电子产品环境应力筛选方法
- 开票加几个点测算表excel公式设置自动计算
- 2025年烟台市中考语文试卷真题(含答案及解析)
- 装备承制经费管理制度
- 25吨汽车吊说明书
- 医药包装考核试卷
- 2024年河北省中考地理试题(原卷版)
- 幼儿园班级幼儿图书目录清单(大中小班)
- JJF 1064-2024坐标测量机校准规范
- (正式版)JBT 5300-2024 工业用阀门材料 选用指南
- 江苏高速公路建设现场安全管理准则化指南
评论
0/150
提交评论