一、 MyBatis与Spring的集成

在学习mybatis配置时,对于mybatis-config配置的时候我们发现,大致是需要配置三个方面:setting、datasource、mappers

而mybatis的setting往往使用默认配置,所以我们经常配置datasource数据源与mappers映射,但学习spring之后发现,对于datasource的配置交由spring进行管理,所以在spring与mybatis整合后mybatis的配置文件中将不需要配置datasource,mybatis的配置几乎都会在Spring配置之中完成。当然要想要实现spring与mybatis的整合,其中最重要的就是 mybatis-spring.jar 包

  • mybatis-spring会用于帮助你将 MyBatis 代码无缝地整合到 Spring 中。
  • Spring 将会加载必要的 MyBatis 工厂类和 Session 类
  • 提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。
  • 方便集成 Spring 事务
  • 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常)中。

Mybatis-Spring 兼容性,我们在选择Spring、MyBatis以及mybatis-spring时,应注意版本之间的兼容性

二、spring与mybatis快速整合

①导入spring与mybatis相应坐标
  <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!--定义Spring版本号--><org.springframework.version>4.3.18.RELEASE</org.springframework.version></properties><dependencies><!-- 单元测试相关依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${org.springframework.version}</version></dependency><!-- spring必要依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${org.springframework.version}</version></dependency><!-- spring aop织入依赖 --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.13</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- 数据库连接池 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.29</version></dependency><!-- mybatis相关依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><!-- mybatis与spring对接依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version></dependency></dependencies>
②创建数据库连接配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root# 初始化大小,最小,最大
initialSize=10
minIdle=6
maxActive=50
③创建mybatis配置文件

mybatis文件与之前不同,之前在mybatis-config.xml中配置数据库连接的,现在要把这些放在spring的配置文件中,所以mybatis配置文件中只写setting配置

<?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><settings><!--  缓冲配置  --><setting name="cacheEnabled" value="true"/><!-- 懒加载 --><setting name="lazyLoadingEnabled" value="true"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/><setting name="aggressiveLazyLoading" value="false"/><!-- 缓冲区配置 --><setting name="localCacheScope" value="SESSION"/></settings><!--<environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/test" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments> --><!-- 映射文件的配置<mappers><package name="com.dao" /></mappers> -->
</configuration>
④创建spring配置文件

2)spring配置头文件与约束地址

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">

2)spring注解开发

    <!-- 开启spring 注解扫描 --><context:component-scan base-package="com.yunhe"/>

3)导入properties配置文件

    <!-- 加载类路径下的properties配置文件 --><context:property-placeholder location="classpath:jdbc.properties"/>

4)dataSource数据源配置

     <!-- datasource数据源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="initialPoolSize" value="${initialSize}"/><property name="minPoolSize" value="${minIdle}"/><property name="maxPoolSize" value="${maxActive}"/></bean>

5)sqlSessionFactory数据会话工厂配置

 <!-- 配置SqlSessionFactory对象 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 注入数据库连接池 --><property name="dataSource" ref="dataSource"/><!-- 配置mybatis配置文件 --><property name="configLocation" value="classpath:mybatis.xml"/><!-- 配置mapper映射文件 --><property name="mapperLocations" value="classpath:mapper/*.xml"/></bean>

6)mapper接口配置

    <!-- mybatis.spring自动映射,DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.yunhe.mapper" /></bean>

7)事务管理器

    <!--平台事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>

8)设置事务扫描

    <!-- 开启事务控制的注解支持 --> <tx:annotation-driven transaction-manager="transactionManager" />
⑤根据配置文件创建相应的包、接口、实体类

Account

package com.yunhe.pojo;
public class Account {private String name;private double money;public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}@Overridepublic String toString() {return "Account{" +"name='" + name + '\'' +", money=" + money +'}';}
}

AccountMapper

package com.yunhe.mapper;
import com.yunhe.pojo.Account;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface AccountMapper {public List<Account> selectAll();
}
⑥书写mapper的sql映射配置文件

AccountMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunhe.mapper.AccountMapper"><select id="selectAll" resultType="com.yunhe.pojo.Account">select * from account</select>
</mapper>
⑦书写测试代码
import com.yunhe.mapper.AccountMapper;
import com.yunhe.pojo.Account;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
public class T {@Testpublic void asd(){ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");AccountMapper accountMapper = (AccountMapper) ac.getBean("accountMapper");List<Account> accounts = accountMapper.selectAll();System.out.println(accounts);}
}

结果:

三、mybatis-spring整合jar包功能

①SqlSessionFactoryBean

在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。 而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建。
要创建工厂 bean,将下面的代码放到 Spring 的 XML 配置文件中:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" />
</bean>

1)DataSource
SqlSessionFactory 有一个唯一的必要属性:用于 JDBC 的 DataSource。这可以是任意的 DataSource 对象,它的配置方法和其它 Spring 数据库连接是一样的。

2)configLocation
一个常用的属性是 configLocation,它用来指定 MyBatis 的 XML 配置文件路径。它在需要修改 MyBatis 的基础配置非常有用。通常,基础配置指的是<settings> 或 <typeAliases> 元素。
需要注意的是,这个配置文件并不需要是一个完整的 MyBatis 配置。确切地说,任何环境配置(<environments>),数据源(<DataSource>)和 MyBatis 的事务管理器(<transactionManager>)都会被忽略。SqlSessionFactoryBean 会创建它自有的 MyBatis 环境配置(Environment),并按要求设置自定义环境的值。

如果 MyBatis 在映射器类对应的路径下找不到与之相对应的映射器 XML 文件,那么也需要配置文件。这时有两种解决办法:第一种是手动在 MyBatis 的 XML 配置文件中的 <mappers> 部分中指定 XML 文件的类路径;第二种是设置工厂 bean 的 mapperLocations 属性。

3)mapperLocations
mapperLocations 属性接受多个资源位置。这个属性可以用来指定 MyBatis 的映射器 XML 配置文件的位置。属性的值是一个 Ant 风格的字符串,可以指定加载一个目录中的所有文件,或者从一个目录开始递归搜索所有目录。比如:

    <!-- 配置SqlSessionFactory对象 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 注入数据库连接池 --><property name="dataSource" ref="dataSource"/><!-- 配置mybatis配置文件 --><property name="configLocation" value="classpath:mybatis.xml"/><!-- 配置mapper映射文件 --><property name="mapperLocations" value="classpath:mapper/*.xml"/></bean>
②MapperScannerConfigurer

basePackage
MapperScannerConfigurer:有一个重要的属性basePackage用于扫描映射指定包下所有的mapper映射接口,mybatis执行时会与已经加载的mapper对应的xml进行映射调用相应的方法执行sql语句返回结果

   <!-- mybatis.spring自动映射,DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.yunhe.mapper" /></bean>

Spring与Mybatis整合相关推荐

  1. java元婴期(26)----java进阶(mybatis(5)---spring和mybatis整合(重点)逆向工程(会用))

    spring和mybatis整合 1.整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactor ...

  2. Spring+SpringMVC +MyBatis整合配置文件案例66666

    Spring+SpringMVC +MyBatis整合配置文件案例 标签: springspringmvcmybatismvcjava 2017-04-13 19:12 228人阅读 评论(1) 收藏 ...

  3. spring和mybatis整合:使用xml方式

    文章目录 spring和mybatis整合:使用xml方式 1. 创建数据库 2. 创建工程,pom.xml文件如下: 3. 依赖下载地址如下: 4. 配置mybatis的全局配置,在resource ...

  4. (八)Spring与MyBatis整合

    持久层 目录 Mybatis 开发步骤回顾 Mybatis 开发中存在的问题 Spring 与 Mybatis 整合思路 Spring 与 Mybatis 整合的开发步骤 Spring 与 Mybat ...

  5. Spring boot Mybatis 整合(注解版)

    之前写过一篇关于springboot 与 mybatis整合的博文,使用了一段时间spring-data-jpa,发现那种方式真的是太爽了,mybatis的xml的映射配置总觉得有点麻烦.接口定义和映 ...

  6. Spring和Mybatis整合

    9. Spring和Mybatis整合 9.1 创建工程 新建工程,导入所需jar包: <dependencies><!-- mybatis核心包 --><depende ...

  7. Spring boot Mybatis 整合(完整版)

    Spring boot Mybatis 整合(完整版) 更多干货 SpringBoot系列目录 正题 本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: ...

  8. 【Spring 持久层】Spring 与 Mybatis 整合

    持久层 持久层整合总述 Mybatis 开发步骤回顾 Mybatis 开发中存在的问题 Spring 与 Mybatis 整合思路 Spring 与 Mybatis 整合的开发步骤 Spring 与 ...

  9. SpringMvc、Spring和Mybatis整合(SSM框架整合)

    SpringMvc.Spring和Mybatis整合 就是我们通常的SSM整合. 先创建一个web的Maven项目. 1.SpringMvc环境搭建 1.1 导入SpringMvc所需要的依赖 在项目 ...

  10. Spring、Mybatis整合Service优化思路,DAO层、Service层最终编码以及log4j日志的使用

    5. Spring.Mybatis整合Service层事务控制优化思路分析 # spring中处理事务的两种方式1. 编程式事务处理定义:通过在业务层中注入事务管理器对象,然后通过编码的方式进行事务控 ...

最新文章

  1. 5g与edge ai_使用OpenVINO部署AI Edge应用
  2. python画正方形的代码_python绘制正方形螺旋线的代码分享
  3. Intel 64 and IA-32 Architectures Instruction Format 指令格式
  4. 程序运行时被用户删除了工作目录后崩溃
  5. Xcode 9: An error occurred uploading to the iTunes Store. iTunes Store Operation Failed
  6. PDF Expert for Mac(PDF阅读器) 2.4.29最新中文激活版
  7. 最全的基于MFC的ActiveX控件开发教程
  8. Python 数据结构之二叉树的实现
  9. hl7 java_HL7 2.X解析(JAVA版)
  10. 关于铭锐办公系统运行节资统计
  11. 竞赛 | 中国健康信息处理大会(CHIP2022)发布评测任务
  12. selenium新浪邮箱注册句柄切换实战
  13. LLC谐振电路(二) 同步整流技术
  14. 最实用的微信小程序大全,持续更新中...
  15. 网络编程socket之bind、Listen 及 accept
  16. 微信小程序开发入门教程(七)
  17. python版 —— 验证码校验 打码兔平台的使用介绍
  18. html网页主题有哪些,网站的专题页面是什么?
  19. spring boot支付宝沙盒扫二维码支付
  20. 27、scratch教程-画心形

热门文章

  1. 那年,我们一起演的年会节目
  2. SpringCloud系列--eureka(三)服务发现DiscoveryClient
  3. 武林外传经典对话大全(转)
  4. LVPECL CML LVDS HSCL LPHSCL电路
  5. 传统电视or互联网电视,智能电视领域谁才是虎狼之师
  6. 什么是VRRP虚拟路由器冗余协议
  7. 伊朗:完成由本国法币支持的国家加密货币开发
  8. python修改mac地址_linux手动、自动更改网卡MAC地址的方法
  9. Cache与主存的地址映射
  10. eNSP中玩转Python自动化——解锁网工新姿势(二)