spring学习 六 spring与mybatis整合

  在mybatis学习中有两种配置文件 :全局配置文件,映射配置文件。mybatis和spring整合,其实就是把mybatis中的全局配置文件的配置内容都变成一个spring容器的一个bean,让spring容器进行托管.因此整合过程就是把mybatis全局配置文件的内容整合到spring的配置文件中

(一)mybatis全局配置文件 :

根标签是<configuration>,

子标签包括:

<typeAliases>配置别名,

<environments> 配置数据库环境,

<mappers> 配置包扫描

<?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>
    <!--
        配置log4j
     -->
     <settings>
         <setting name="logImpl" value="LOG4J"/>
     </settings>

    <!-- default的值是<environment>的id,代表当前要连接的数据库环境
        【注】default的值一定要是一个<environment>,否则在获取SqlSession实例时会报空指针错误
     -->
    <environments default="mySqlJdbc">
        <environment id="mySqlJdbc">
            <!-- 事物标签,使用原生jdbc的事物 ,如果是MANAGERD表示交给其他容器管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据库连接池技术 -->
            <dataSource type="POOLED">
                <!-- property中的name的值,不能随便写,有规定的 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
        <environment id="oracleJdbc">
            <transactionManager type=""></transactionManager>
            <dataSource type=""></dataSource>
        </environment>
    </environments>

    <!-- 加载XXXMapper.xml
        如果采用代理开发,package批量指定xxxMapper.xml文件已经xxxMapper.java文件
     -->
    <mappers>
        <mapper resource="com/xxx/mapper/FlowerMapper.xml"/>
    </mappers>
</configuration>

根上面的配置文件,就可以推断出,spring中必须有

(1)用来描述数据库链接的基本配置内容,对应mybatis配置文件中的<dataSource>标签

(2)用来获取sqlSession的sqlSessionFactory,对应mybatis中的下面的代码

    //加载配置文件
        InputStream in = Resources.getResourceAsStream("mybatis.xml");
        //使用工厂设计模式   【注意】以后sqlSessionFactory都会被spring 管理,不需要我们自己创建
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);

(3) 用来指定映射文件位置的配置内容,mybatis全局配置文件中的<mappers>标签

(二) 把mybatis全局配置文件整合进spring配置文件

第一步:整合数据库配置

  在spring中使用了一个数据源封装类来替换mybatis全局配置文件中的<dataSource>标签,这个类就是org.springframework.jdbc.datasource.DriverManagerDataSource,在spring-jdbc.jar包中。在spring配置文件中做如下配置

<!--
             数据源封装类
            数据源就是用来封装数据库链接的,此处的类就是对JDBC中的DriverManager的封装
            spring对jdbc的封装在spring-jdbc.jar包中
            数据源封装类的作用就是代替mybatis中的<dataSource>标签里面的东西
         -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="url" value="jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8"></property>
            <property name="username" value="root"></property>
            <property name="password" value="123456"></property>

            <!--
                在DriverManagerDataSource类以及父类中,并没有任何一个driverClassName属性,
                只是有一个public void setDriverClassName(String driverClassName)方法,
                在使用<property>标签时,其实是根据name属性的值,来确定要调用的setter方法,name属性的值并不是类中的属性
             -->
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        </bean>

第二步:把用来获取sqlSession的sqlSessionFactory注册到spring工厂

    <!-- sqlSessionFactory ,注册sqlSession工厂-->
        <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!--dataSource的类型是DataSource是一个接口,上面配置的DriverManagerDataSouce类实现了DataSource接口  -->
            <property name="dataSource" ref="dataSource"></property>
        </bean>

第三步:配置mybatis要扫描的映射文件的位置,spring在扫描basePackage指定的包时,会创建这个包下的所有接口的实现类的实例,并把这些实例注册到spring容器,且注册的名称为接口名的首字母小写

<!--
        配置mybatis扫描的mapper包,是替代mybatis全局配置文件中的<mappers>标签
        扫描了com.spring.mapper包下的所有的接口,并且会给这些接口提供实例化,并且实例化的bean命名为首字母小写的接口名
        例如有一个接口名为AirportMapper,在spring中对应的bean的名称为airportMapper
         -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.airplan.mapper" ></property>
            <property name="sqlSessionFactory" ref="sessionFactory"></property>
        </bean>

经过上述三步就可以把mybatis需要的基本内容整合进spring

为了下面的代码测试,再在spring配置文件中配置一个bean

    <bean name="airportService" class="com.airplan.service.impl.AirportServiceImpl">
            <property name="airportMapper" ref="airportMapper"></property>
        </bean>

(三)代码测试

public class TestClass {
    public static void main(String[] args) {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

        String[] names=ac.getBeanDefinitionNames();
        for (String string : names) {
            System.out.println(string);
        }

        AirportService bean = ac.getBean("airportService",AirportService.class);

        List<Airport> showAirports = bean.showAirport();
        System.out.println(showAirports.size());
        for (Airport airport : showAirports) {
            System.out.println(airport);
        }
    }
}

原文地址:https://www.cnblogs.com/cplinux/p/9736647.html

时间: 2024-10-09 21:29:22

spring学习 六 spring与mybatis整合的相关文章

Spring学习六、AOP与整合Mybatis

十一.AOP AOP(Aspect Oriented Programming) 意为:面向切面编程 是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP是OOP的一种延续,是软件开发的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型. 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率. AOP的作用及优势 作用 程序运行期间,不修改源码对已有方法进行增强 优势 减少重复代码

Spring Cloud 学习 (六) Spring Cloud Config

在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置.日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的.随着服务数量的增加,配置文件的管理也是一件非常复杂的事 在微服务架构中,需要有统一管理配置文件的组件,例如 Spring Cloud 的 Spring Cloud Config.阿里的 Diamond.百度的 Disconf.携程的 Apollo 等 新建 spring-cloud-config-server 从本地读取配置 pom <parent> <arti

spring学习(三) ———— spring事务操作

前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTemplate? spring提供用于操作数据库模版,类似Dbutils,通俗点讲,我们操作数据库,spring也会帮我们提供一个操作数据库的工具供我们使用,而不用我们自己手动编写连接数据库,获取结果集等等操作,这个工具就是JdbcTemplate.跟Dbutils一样,想要使用JdbcTemplate

Spring学习【Spring概述】

从本文开始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架.其中采用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是很值得学习与使用的.下面我们就进入正题!介绍Java平台上的一个优秀的开源应用框架Spring,以及Spring框架的历史和Spring框架相关基本知识. [转载使用,请注明出处:http://blog.csdn.net/mahoking] Spring 介绍 Spring是Java平台上的一个开源应用框架.它的第一个版本是由

springMVC学习(3)-springMVC和mybatis整合

一.需求:使用springmvc和mybatis完成商品列表查询. 二.整合思路:springMVC+mybaits的系统架构: 1步):整合dao层 mybatis和spring整合,通过spring管理mapper接口.使用mapper的扫描器自动扫描mapper接口在spring中进行注册. 2步):整合service层 通过spring管理 service接口.使用配置方式将service接口配置在spring配置文件中.实现事务控制. 3步)整合springmvc 由于springmv

Spring学习笔记--Spring简介

1.spring:给软件行业带来了春天; 2.spring的理念:spring框架的初衷是使的现有的更加实用,spring不是创造轮子(技术或框架),而是使现有的轮子更好的运转;spring本身是一个大杂烩,整合现有的框架技术: 3.Spring优点: 轻量级框架:不具备侵入性(使用某个框架,我们不需要实现它的某个接口,方便框架的替换,原有的代码不需要替换); Ioc容器:控制反转; Aop:面向切面编程; 对事务的支持: 对矿建的支持; ................... 4.主要内容:

Spring学习2—Spring容器

一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的组件. Spring容器会使用XML解析器读取改属性值,并利用反射来创建该实现类的实例. Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.它们都可以代表Spring容器.Spring容

spring学习9 Spring工作原理及其作用

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到Mo

Spring 学习6 -Spring MVC-2 (Spring MVC讲解)

在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简化它的配置. 目录 MVC框架是什么Dispatcher Servlet(Spring控制器)Spring入门示例运行时依赖库web.xml和spring-servlet.xml文件配置请求控制器EmployeeController.java视图模型EmployeeVO.javaDao类业务层类视图