集成思路

Spring能集成很多的框架,是Spring一个优势功能。

通过集成功能,让开发人员使用其他框架更方便。

集成使用的是Spring IoC 核心技术。

spring整合原生mybatis spring整合mybatis要点_spring

要使用框架,例如mybatis,怎么使用mybatis ?

Spring集成MyBatis的目的👉将Mybatis框架中用到的对象交给Spring来管理,主要是SqlSessionFactorydao代理,把这两个交给容器Spring。在Spring主配置文件中声明对象

使用mybatis,需要创建mybatis框架中的某些对象, 使用这些对象,就能使用mybatis提供的功能。

分析: mybatis执行sql语句,需要使用那些对象
1.需要有Dao接口的代理对象, 例如StudentDao接口, 需要一个它的代理对象使用 SqlSession.getMapper(StudentDao.class),得到dao代理对象

2.需要有SqlSessionFactory👉创建SqlSessionFactory对象👉使用openSession()得到SqlSession对象👉执行SqlSession.getMapper()

3.数据源DataSource对象, 使用一个更强大、功能更多的连接池对象代替mybatis自己的PooledDataSource

👇👇👇

spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_02

spring集成mybatis

实现步骤:
1.使用的mysql库, 使用学生表 student2(id int 主键列, 自动增长,name varchar(80), age int)

2.创建maven项目

3.加入依赖gav
spring依赖, mybatis依赖, mysql驱动, junit依赖
mybatis-spring依赖(mybatis网站上提供的,用来在spring项目中,创建mybatis对象)
spring有关事务(提交、回滚)的依赖。

mybatis和spring整合的时候, 事务是自动提交的。

4.创建实体类Student

5.创建Dao接口和mapper文件写sql语句

6.写mybatis主配置文件

7.创建service接口和它的实现类

8.创建spring的配置文件
1)声明数据源DataSource,使用的阿里的Druid连接池
2) 声明SqlSessionFactoryBean类,在这个类内部创建的是SqlSessionFactory对象。
3)声明MapperScannerConfiguration类,在内部创建dao代理对象,
创建的对象都放在spring容器中。
4)声明Service对象,把3)的中dao赋值给service属性

9.测试dao访问数据库

具体实现

1.创建maven项目

2.MySQL 创建数据库 springdb,新建表 Student

spring整合原生mybatis spring整合mybatis要点_java_03


3.在pom.xml中添加依赖

<!--spring依赖-->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.2.5.RELEASE</version>
      </dependency>

      <!--spring事务依赖-->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>5.2.5.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.2.5.RELEASE</version>
      </dependency>

      <!--mybatis依赖-->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.1</version>
      </dependency>

      <!--mybatis和spring集成-->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.1</version>
      </dependency>

      <!--mysql驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.9</version>
      </dependency>

      <!--阿里的连接池-->
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.12</version>
      </dependency>

添加插件:

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory> <!--所在的目录-->
                <includes>
                    <!--包括目录下的.properties,.xml 文件都会扫描到-->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

4.创建实体类(domain包)---- Stuent

spring整合原生mybatis spring整合mybatis要点_配置文件_04


定义属性、列名,生成set、get、toString方法。5.创建Dao接口(dao包)------StudentDao

spring整合原生mybatis spring整合mybatis要点_java_05


写两个方法:

spring整合原生mybatis spring整合mybatis要点_spring_06


6.不用生成实现类,写mapper文件----mybatis-mapper.xml

spring整合原生mybatis spring整合mybatis要点_spring_07

spring整合原生mybatis spring整合mybatis要点_java_08


👇

spring整合原生mybatis spring整合mybatis要点_配置文件_09


7.主配置文件:mybatis-config.xml

spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_10


👇

spring整合原生mybatis spring整合mybatis要点_java_11


8.创建service类

spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_12


实现接口类:

spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_13


spring整合原生mybatis spring整合mybatis要点_配置文件_14


9.Spring配置文件

spring整合原生mybatis spring整合mybatis要点_配置文件_15


spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_16

三个对象:

spring整合原生mybatis spring整合mybatis要点_spring_17

1>Druid 数据源 DruidDataSource

Druid 是阿里的开源数据库连接池。是 Java 语言中最好的数据库连接池。
Druid 能够提供强大的监控和扩展功能。
Druid 与其他数据库连接池的最大区别是提供数据库的
👉官网 👉使用地址

2>声明数据源对象:

spring整合原生mybatis spring整合mybatis要点_xml_18


spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_19


spring整合原生mybatis spring整合mybatis要点_java_20

3>声明MapperScannerConfigurer
SqlSession.getMapper(StudentDao.class)

MapperScannerConfigurer作用是:循环basePackage所表示的包,把包中的每个接口都找到,调用SqlSession.getMapper。把每个dao接口都创建出dao对象 ,dao代理对象放在容器中。

ApplicationContext ctx = ....
SqlSessionFactory sqlSessionFactory  = ctx.getBean("factory");
SqlSession session = sqlSessionFactory.openSession();
for(接口: com.bjpowernode.dao){
         接口 对象 =  session.getMapper(接口)
         springMap.put(接口名的首字母小写, 对象)
}

👇在dao包下的所有接口创建出dao代理对象放在spring容器中

spring整合原生mybatis spring整合mybatis要点_spring_21


测试:查看对象名称及类型

spring整合原生mybatis spring整合mybatis要点_spring_22


👇

新建OrderDao及其配置文件

spring整合原生mybatis spring整合mybatis要点_xml_23


测试:默认创建对象名为接口名首字母小写

spring整合原生mybatis spring整合mybatis要点_java_24


插入数据:

spring整合原生mybatis spring整合mybatis要点_spring_25


刷新数据库:

spring整合原生mybatis spring整合mybatis要点_java_26

4>声明Service👉service使用对应的dao进行数据相关操作

spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_27


spring整合原生mybatis spring整合mybatis要点_spring整合原生mybatis_28


spring整合原生mybatis spring整合mybatis要点_spring_29


10.使用外部属性配置文件

数据库信息有一个单独的属性配置文件.properties

spring整合原生mybatis spring整合mybatis要点_xml_30


spring整合原生mybatis spring整合mybatis要点_spring_31


然后在Spring主配置文件中:

<!--加载外部的属性配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>

spring整合原生mybatis spring整合mybatis要点_配置文件_32