当前位置:   article > 正文

SpringBoot2整合MyBatis_springboot2 mybatis

springboot2 mybatis

前言

在整合MyBatis之前,我们要准备哪些工作:

导入mysql场景:

```xml
<!--SpringBoot对mysql有版本仲裁,博主当前是SpringBoot2.6.6,mysql仲裁版本如下 -->
<mysql.version>8.0.28</mysql.version>
<!--大家也可自行查看自己的版本号 -->
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <mysql.version>8.0.28</mysql.version> <!--使用默认版本,不需要配version -->
</dependency>

想要修改版本
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1、直接依赖引入具体版本(maven的就近原则)
2、重新声明版本(maven的属性的就近原则)

<java.version>1.8</java.version>
<mysql.version>8.0.28</mysql.version>

```

配置文件修改:

```yaml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/user 
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
# 如果是mysql8以上版本,请使用下面配置:
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/hunnu?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456 
```
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

1.导入Mybatis的starter(场景启动器)

<!--mybatis场景-->   
<dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
</dependency>
注意:mybatis的场景包含了jdbc的依赖,所以不需要再次导入了
<!--jdbc场景 -->   
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
注:如果是使用 Spring Initilizr(项目初始化向导)来搭建的话,可在创建项目时就可以选中Mybatis的开发场景以及jdbc场景,系统会自动依赖引入。
  • 1

在这里插入图片描述
导入了Mybatis的场景之后,我们会发现它给我们自动导入了:
在这里插入图片描述

2.Mybatis的自动配置(内含源码解析,初学者可跳过直接使用)

如果是以前使用SSM框架整合MyBatis时,避免不了要写一大推的代码编写Mybatis的核心配置文件啊,SqlSessionFactory以及SqlSession等等之类的东西。总体来说,相当地复杂。但是现在有了SpringBoot (博主的SpringBoot版本:2.6.6)的话,很多的配置都由SpringBoot已经封装好了,节省了很多编写程序的时间。

SpringBoot自动配置好了:

  • 全局配置文件 application.yml
  • 自动配置好了SqlSessionFactory
  • 底层自动配置了SqlSessionTemplateSqlSessionTemplate组合了 SqlSession
  • 主要我们写的Mybatis的接口标注了@Mapper注解就会被SpringBoot自动扫描进来。

我们可以CTRL+N 查找类:MybatisAutoConfiguration (mybatis的自动配置类)可以看到以下内容:

@EnableConfigurationProperties({MybatisProperties.class}) //mybatis配置项绑定类
@AutoConfigureAfter({DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class})
public class MybatisAutoConfiguration implements InitializingBean {



//然后CTRL+左键进入到MybatisProperties.class中发现以下内容:
@ConfigurationProperties(
    prefix = "mybatis"
)
public class MybatisProperties {}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

看到这里,我们发现了 prefix=“mybatis”,然后MybatisProperties又是mybatis配置项绑定类,也就是说我们在application.yml(配置文件)中写了以**“mybatis”**为前缀的配置项都是属于mybatis的配置!!!

3.XMl配置模式 (方式一)

我们可以在配置文件中修改mybatis的配置,来定义mybatis的全局配置文件的位置和sql映射文件位置:

# 配置mybatis规则
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml  #全局配置文件位置
  mapper-locations: classpath:mybatis/mapper/*.xml  #sql映射文件位置
  • 1
  • 2
  • 3
  • 4

然后在resource目录下创建mybatis/mapper/UserPapper.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">
<!--namespace:命名空间,值为你的Mapper接口的全类名 -->        
<mapper namespace="com.atguigu.admin.mapper.AccountMapper">
<!-- 里面写的就是Mapper接口绑定到xml的sql映射语句 -->
</mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注:这里有个很重要问题,就是为什么博主没有写mybatis的全局配置文件呢?

其实在上面 Mybatis的自动配置 里面说的MybatisProperties类中有一个属性叫private Configuration configuration:
在这里插入图片描述

也就是说我们只需修改application.yml(配置文件)中以"mybatis.configuration"为前缀的下面的所有,就是相当于修改mybatis的全局配置文件中的值!!

# 配置mybatis规则
mybatis:
#  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
    
 可以不写全局配置文件,所有全局配置文件的配置都放在mybatis.configuration配置项中即可
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

总体流程:

  • 导入mybatis官方starter

  • 编写mapper接口。标准@Mapper注解

  • 编写sql映射文件并绑定mapper接口

  • 在application.yml中指定Mapper配置文件的位置,以及指定全局配置文件的信息(推荐配置在mybatis.configuration

4.注解方式(方式二)

使用注解可以省去mybatis的全局配置文件 mybatis-config.xmlxml的sql映射文件。

示例代码如下:
pojo:

@Data
public class User {
    private int id;
    private String name;
    private int age;
    private String email;
    
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

mapper(dao):

@Mapper
public interface UserMapper {

    @Select("select * from user where id=#{id}")
    public Singer getUser(int id);
    
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

controller:

    @ResponseBody
    @RequestMapping("/getUser")
    public User getUser(@RequestParam("id")int id){
        User user =  userMapper.getUser(id);
        return user;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果:
在这里插入图片描述

5.混合模式 (最佳方式)

在实际生产开发中,最佳方式是xml配置方式注解方式混合使用。

最佳实战:

  • 引入mybatis-starter的场景启动器
  • 配置application.yml中,指定mapper-location位置即可
  • 编写Mapper接口并标注 @Mapper 注解 (如果觉得每次写接口都要标注 @Mapper 这样很麻烦,在springboot主程序启动类中配置 @MapperScan(“指定要扫描的位置”) )
  • 简单方法直接注解方式
  • 复杂方法编写mapper.xml进行绑定映射
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/498216
推荐阅读
相关标签
  

闽ICP备14008679号