当前位置: 首页 > news >正文

Spring与Mybatis整合

持久层整合

1.Spring框架为什么要与持久层技术进行整合

JavaEE开发需要持久层进行数据库的访问操作

JDBC Hibernate Mybatis进行持久层开发存在大量的代码冗余

Spring基于模板设计模式对于上述的持久层技术进行了封装

2.Mybatis整合

SqlSessionFactoryBean MapperScannerConfigure

Spring与Mybatis整合

1.Mybatis开发步骤的回顾

1.实体

2.实体别名

3.表

4.创建DAO接口

5.实现Mapper文件

6.注册Mapper文件

7.MybatisAPI调用

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db03?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="EmpMapper.xml"/>
    </mappers>
</configuration>

1.实体

2.实体别名  配置繁琐

3.表

4.创建DAO接口 

5.实现Mapper文件

6.注册Mapper文件 配置繁琐(一个Dao就需要配置一个)

7.MybatisAPI调用 代码冗余

 Spring与Mybatis整合思路分析

编码步骤

1.搭建开发环境(jar)

 <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.14.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.18</version>
        </dependency>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<!--        连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/db03?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    </bean>
<!--    创建sqlSessionFactory SqlSessionFactoryBean-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations">
            <list>
                <value>classpath:mybatis.mapper/*Mapper.xml</value>
            </list>
        </property>
    </bean>
<!--    创建DAO对象 MapperSannerConfigure-->
    <bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="mybatis.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
</beans>

Spring与Mybatis细节

Spring与Mybatis整合后,为什么Dao不提交事务,但是数据能查询并插入的数据库?

本质上控制连接对象(Connection)--->连接池(DataSource)

1.Mybatis提供的连接池对象 --->创建Connection

         Connection.setAutoCommit(false) 手工的控制了事务 操作完成后,手动提交

2.Druid(C3P0 DBCP)作为连接池  ->>>创建Connection

        Connection.setAutoCommit(true) true为默认值 保存自动控制事务 一条sql 自动提交

回答:Spring与Mybatis整合,引入了外部连接池对象,保持自动事务提交这个机制(Connection.setAutoCommit(true))不需要手动提交,自动提交事务

未来实战中,还会手工控制事务,多条Sql一起成功 一起失败 后续Spring通过事务控制解决这个问题

相关文章:

  • DeepSeek(14):DeepSeek 模型微调
  • Go 语言标准库中sort模块详细功能介绍与示例
  • 为什么 PPO 概率计算适合连续动作
  • 办公网络健康监控(域名健康监控)
  • 六十天前端强化训练之第三十二天之Babel 转译配置大师级深度讲解
  • Python实现单因素方差分析
  • 构建大语言模型应用:简介(第一部分)
  • vs 2022安装指南
  • 深入解析 TypeScript 核心配置文件 tsconfig.json
  • 本地AI大模型部署革命:Ollama部署和API调试教程
  • 【JavaEE】Mybatis 动态SQL
  • ctfshow-web入门-特定函数绕过(web396-web405)
  • 剑指Offer62 -- 约瑟夫环
  • 黑盒测试的概念和特点
  • JAVA SE :认识数组
  • C#中,什么是委托,什么是事件及它们之间的关系
  • Linux内核调试 - Hung_task机制分析下
  • ADZS-ICE-2000和AD-ICE2000仿真器在线升级固件
  • 典范硬币系统(Canonical Coin System)→ 贪心算法
  • EXCEL报错:无法共享此工作薄,因表包含excel表或xml映射的解决方法
  • 黑龙江省建设工程交易中心网站/google海外版
  • 建设通网站cbi/淘宝关键词搜索量查询工具
  • 拉萨工商做年检网站/温州百度推广公司电话
  • 做网站用哪个电脑/外贸网站seo优化
  • 网站怎么做分类聚合/关键词优化策略有哪些
  • wordpress改变上传目录权限/保定seo网站推广