首页 > 其他分享 >Spring5学习随笔-整合MyBatis(持久层)、连接池、Mapper文件

Spring5学习随笔-整合MyBatis(持久层)、连接池、Mapper文件

时间:2023-11-20 23:22:05浏览次数:42  
标签:Mapper Spring Mybatis Connection 整合 MyBatis 连接池

学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】

Spring持久层整合 第一章、持久层整合

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

  1. JavaEE开发需要持久层进行数据库的访问操作。
  2. JDBC MyBatis、Hibernate进行持久开发过程存在大量的代码冗余
  3. Spring基于模板设计模式对与上述的持久层技术进行了封装

2.Spring可以与那些持久层技术进行整合?

  1. JDBC

    工具:JDBCTemplate

  2. Hibernate(JPA)

    工具:HibernateTemplate

  3. MyBatis

    工具:SqlSessionFactoryBean MapperScannerConfigure

第二章、Spring与MyBatis整合

本质:就是对MyBatis目前不满意的地方进行整合,从而让MyBatis开发变得更整洁

1.MyBatis开发步骤的回顾

  1. 实体
  2. 实体别名
  3. 建立表
  4. 创建DAO接口
  5. 实现Mapper文件
  6. 注册Mapper文件
  7. MybatisAPI调用

2.Mybatis在开发过程中存在的问题

  1. 配置繁琐(2.实体别名,6.注册Mapper文件) 代码冗余(7.API调用

3.Spring与Mybatis整合思路分析

4.Spring与Mybatis整合的开发步骤

  1. 配置文件(ApplicationContext.xml)进行相关配置

    **#配置 是只需要配置一次
    <!-- 连接池 四个参数 driverClassName、url、username、password、-->**
    <bean id="dataSource" class=""/>
    <!--创建SqlSessionFactory-->
    <bean id="ssfb" class="SqlSessionFactoryBean">
    		<property name="dataSource" ref=""/>
    		<property name="typeAliasesPackage">
    				**指定实体类所在的包 com.baizhi.entity**
    		</property>
    		<property name="mapperLocations">
    				**指定 配置文件的路径以及通用配置**
    				com.baizhi.mapper/*Mapper.xml
    		</property>
    </bena>
    
    <!--DAO接口的实现类
    		session--->session.getMapper() ---xxxDAO实现类对象
    		XXXDAO ---> xXXDAO
    -->
    <bean id="scanner" class="MapperScannerConfigure">
    		<property name="sqlSessionFactoryBeanName" value="ssfb"/>
    		<property name="basePackage">
    				**指定DAO接口放置的包 com.baizhi.dao**
    		</property>
    </bean>
    
  2. 编码

    实战经常根据需求 写的代码

    1. 实体
    2. 创建DAO接口
    3. 实现Mapper文件

5.Spring与Mybatis整合编码

  • 搭建开发环境(jar)

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.1.14.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.18</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.48</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    
  • Spring配置文件的配置

    <!--连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/myschool?useSSL=false&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    <!-- 创建SqlSessionFactory SqlSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.baizhi.entity"/>
        <property name="mapperLocations">
            <list>
                <value>classpath:com.baizhi.mapper/*Mapper.xml</value>
            </list>
        </property>
    </bean>
    <!--创建DAO对象 MapperScannerConfigure-->
    <bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
        <property name="basePackage" value="com.baizhi.dao"/>
    </bean>
    
  • 编码

    1. 编码
    2. DAO接口
    3. Mapper文件配置

6.Spring与Mybatis整合细节

  • 问题:Spring与Mybatis整合后,为什么DAO不提交事务,但是数据能够插入数据库中?

    Connection -—> tx

    Mybatis(Connection)

    本质上控制连接对象(Connection) —→连接池(DataSource)

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

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

    2. Druid(C3P0) DBCP)作为连接池 —→创建Connection

      Druid保持自动控制事务,Connection.setAutoCommit的参数为true,一条sql 自动提交

    答案:因为Spring与Mybatis整合时,引入了外部连接池对象,保持自动的事务提交机制,不需要手工进行事务的操作也能自动提交。

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

标签:Mapper,Spring,Mybatis,Connection,整合,MyBatis,连接池
From: https://www.cnblogs.com/eyewink/p/17845189.html

相关文章

  • 请求扩展,蓝图 , flask-session,数据库连接池,wtforms ,flask-script,信号,flask-cache
    1请求扩展......
  • 一次 Druid 连接池泄露引发的血案
     最近某个应用程序老是卡,需要重启才能解决问题,导致被各种投诉,排查问题是Druid连接池泄露引发的血案。。异常日志如下:ERROR - com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 50, maxActive 50, creating 0at com.alibaba.......
  • mybatis判断多个条件
    以下是通过仓库+物资来进行查询@Select("<script>"+"SELECTv.id,v.kfcode,v.kfname,v.kc,p.wzname,p.dw,v.wzgg"+"FROM(select*fromy_kc"+"wheresoftdel=0"+"<......
  • MyBatis-Plus
    MyBatis-Plus官网:https://baomidou.com/一、简介1.概述MyBatis-Plus(简称MP,是由baomidou(苞米豆)组织开源的)是一个基于MyBatis的增强工具,它对Mybatis的基础功能进行了增强,但未做任何改变。使得我们可以在Mybatis开发的项目上直接进行升级为Mybatis-plus,正如它对自己的......
  • No libraries found for 'tk.mybatis.mapper.common.Mapper'
    1,无法导入tk.mybatis.mapper.common.Mapper2.Mapper报错Nolibrariesfoundfor'tk.mybatis.mapper.common.Mapper'解决方法如下(添加通用mybatis这个依赖)1.在pom.xml中添加tk.mybatis这个依赖<dependency><groupId>tk.mybatis</groupId>......
  • mybatis拦截器:实现拦截update语句插入列值
    1、修改sql的时机在预编译SQL(prepare方法)前加入修改的逻辑。可以对sql处理也可以对映射类做处理(本例是对映射类做处理)。2、准备的xml文件mybatis-config.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig......
  • Mybatis配置
    Mybatis配置常用依赖(pom.xml)<!--添加log4j依赖--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--添加mybatis依赖--><dependency......
  • mybatisplus关于驼峰命名法与下划线的映射
    今天遇到一个很坑的事情,我在测试之前的案例的时候我有一个字段的名字是typeId,我调试之后发现插入出现了错误。开启sql日志之后我发现mybatisplus自动把我的typeId改成type_id了。无奈之下我只能把数据库、实体类的驼峰命名法改成下划线###SQL:SELECTid,name,description,t......
  • Mybatis和其他主流框架的整合使用
    Mybatis简介MyBatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“internet”和“abat......
  • Idea配置mybatis核心配置文件模板
    在我们日常开发中不可能将mybatis相关配置文件全部记住,我们这里通过在idea中配置模板快捷生成(本文演示idea版本为2022.02.01)。方法如下:1.进入idea设置File->settings2.选择Editor->FileandCodeTemplates->Files3.点击“+”创建模板,对模板命名,设置模板类型,设置模板默认名字(模板中......