Java课题笔记~ Spring 集成 MyBatis

Spring 集成 MyBatis

将 MyBatis 与 Spring 进行整合,主要解决的问题就是将 SqlSessionFactory 对象交由 Spring 来管理。所以该整合,只需要将 SqlSessionFactory 的对象生成器SqlSessionFactoryBean 注册在 Spring 容器中,再将其注入给 Dao 的实现类即可完成整合。

实现 Spring 与 MyBatis 的整合常用的方式:扫描的 Mapper 动态代理

Spring 像插线板一样,mybatis 框架是插头,可以容易的组合到一起。

插线板 spring 插上 mybatis,两个框架就是一个整体。

Java课题笔记~ Spring 集成 MyBatis_第1张图片

1、MySQL 创建数据库 db1,新建表 student2

Java课题笔记~ Spring 集成 MyBatis_第2张图片

 

2、maven 依赖 pom.xml


    
        junit
        junit
        4.12
        test
    
    
        org.springframework
        spring-context
        5.3.26
    
    
        org.springframework
        spring-tx
        5.3.26
    
    
        org.springframework
        spring-jdbc
        5.3.26
    
    
        org.mybatis
        mybatis
        3.5.11
    
    
    
        org.mybatis
        mybatis-spring
        2.1.0
    
    
    
        mysql
        mysql-connector-java
        8.0.29
    
    
        com.alibaba
        druid
        1.2.8
    
	
 

    
        
            src/main/java
            
                **/*.properties
                **/*.xml
            
            false
        
    
    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.11.0
            
                1.8
                1.8
            
        
    

3、定义实体类 Student

Java课题笔记~ Spring 集成 MyBatis_第3张图片

 代码如下:

package com.ambow.pojo;

import lombok.Data;

@Data
public class Student {
    private int id;
    private String name;
    private int age;

}

4、定义 StudentDao 接口

Java课题笔记~ Spring 集成 MyBatis_第4张图片

 代码如下:

package com.ambow.dao;

import com.ambow.pojo.Student;

import java.util.List;

public interface StudentDao {
    int insertStudent(Student student);
    int updateStudent(Student student);
    int deleteStudent(int id);

    Student selectStudentById(int id);
    List selectAllStudents();
}

5、定义映射文件 mapper

在 Dao 接口的包中创建 MyBatis 的映射文件 mapper,命名与接口名相同,本例为 StudentDao.xml

mapper 中的 namespace 取值也为 Dao 接口 的全限定性名。

Java课题笔记~ Spring 集成 MyBatis_第5张图片

  代码如下:





    
        insert into student2 values(null,#{name},#{age})
    
    
        update student2 set name = #{name},age = #{age} where id = #{id}
    
    
        delete from student2 where id = #{id}
    
    
    


6、定义 Service 接口和实现类

接口定义:

Java课题笔记~ Spring 集成 MyBatis_第6张图片

  代码如下:

package com.ambow.service;

import com.ambow.pojo.Student;

import java.util.List;

public interface StudentService {
    int addStudent(Student student);
    int modifyStudent(Student student);
    int removeStudent(int id);

    Student findStudentById(int id);
    List findAllStudents();
}

实现类定义:

Java课题笔记~ Spring 集成 MyBatis_第7张图片

  代码如下:

package com.ambow.service.impl;

import com.ambow.dao.StudentDao;
import com.ambow.pojo.Student;
import com.ambow.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.List;

@Service("studentService")
public class StudentServiceImpl implements StudentService {

    //引入StudentDao的对象
    @Autowired
    private StudentDao studentDao;

    public void setStudentDao(StudentDao studentDao) {
        this.studentDao = studentDao;
    }

    @Override
    public int addStudent(Student student) {
        return studentDao.insertStudent(student);
    }

    @Override
    public int modifyStudent(Student student) {
        return studentDao.updateStudent(student);
    }

    @Override
    public int removeStudent(int id) {
        return studentDao.deleteStudent(id);
    }

    @Override
    public Student findStudentById(int id) {
        return studentDao.selectStudentById(id);
    }

    @Override
    public List findAllStudents() {
        return studentDao.selectAllStudents();
    }
}

7、定义 MyBatis 主配置文件

在 src 下定义 MyBatis 的主配置文件,命名为 mybatis.xml

这里有两点需要注意:

(1)主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器 来管理了。

(2)这里对 mapper 映射文件的注册,使用标签,即只需给出 mapper 映射文件所在的包即可。因为 mapper 的名称与 Dao 接口名相同, 可以使用这种简单注册方式。

这种方式的好处是:若有多个映射文件,这里的 配置也是不用改变的。当然,也可使用原来的标签方式。

Java课题笔记~ Spring 集成 MyBatis_第8张图片

 

8 、修改 Spring 配置文件

(1) 数据源的配置(掌握)

使用 JDBC 模板,首先需要配置好数据源,数据源直接以 Bean 的形式配置 在 Spring 配置文件中。根据数据源的不同,其配置方式不同:

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

官网:GitHub - alibaba/druid: 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池 - GitHub - alibaba/druid: 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池https://github.com/alibaba/druid

使用地址:Home · alibaba/druid Wiki · GitHub阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池 - Home · alibaba/druid Wikihttps://github.com/alibaba/druid/wiki/

常见问题

配置连接池:

Java课题笔记~ Spring 集成 MyBatis_第9张图片

  Spring 配置文件:

Java课题笔记~ Spring 集成 MyBatis_第10张图片

  代码如下:

    
    
        
        
        
        
    

(2) 从属性文件读取数据库连接信息

为了便于维护,可以将数据库连接信息写入到属性文件中,使 Spring 配置 文件从中读取数据。

属性文件名称自定义,但一般都是放在 src 下。

Java课题笔记~ Spring 集成 MyBatis_第11张图片

  代码如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.2.111:3306/db1
jdbc.username=root
jdbc.password=Mysql666!

Spring 配置文件从属性文件中读取数据时,需要在的 value 属性中使用${ },将在属性文件中定义的 key 括起来,以引用指定属性的值。

该属性文件若要被 Spring 配置文件读取,其必须在配置文件中进行注册。 使用标签。

方式(掌握)

该方式要求在 Spring 配置文件头部加入 spring-context.xsd 约束文件

标签中有一个属性 location,用于指定属 性文件的位置。

 (3) 注册 SqlSessionFactoryBean

 Java课题笔记~ Spring 集成 MyBatis_第12张图片

代码如下: 

    
    
        
        
        
    

(4) 定义 Mapper 扫描配置器 MapperScannerConfigurer

Mapper 扫描配置器 MapperScannerConfigurer 会自动生成指定的基本 包中 mapper 的代理对象。该 Bean 无需设置 id 属性。basePackage 使用分 号或逗号设置多个包。

Java课题笔记~ Spring 集成 MyBatis_第13张图片

 Java课题笔记~ Spring 集成 MyBatis_第14张图片

 代码如下:

    
    
        
        
    

9、向 Service 注入接口名

向 Service 注入 Mapper 代理对象时需要注意,由于通过 Mapper 扫描配置器 MapperScannerConfigurer 生成的 Mapper 代理对象没有名称,所以在 向 Service 注入 Mapper 代理时,无法通过名称注入。但可通过接口的简单类名注入,因为生成的是这个 Dao 接口的对象。

 Java课题笔记~ Spring 集成 MyBatis_第15张图片

 代码如下:

    

10、Spring 配置文件全部配置

Java课题笔记~ Spring 集成 MyBatis_第16张图片

 代码如下:




    

    
    
    
    
    
        
        
        
        
    
    
    
        
        
        
    
    
    
        
        
    

    


    
    

项目整体结构如下图:

Java课题笔记~ Spring 集成 MyBatis_第17张图片

 运行测试类test02:

Java课题笔记~ Spring 集成 MyBatis_第18张图片

 

运行测试类test03:

Java课题笔记~ Spring 集成 MyBatis_第19张图片

 

你可能感兴趣的:(Java,java,笔记,spring)