SpringBoot学习之整合Mybatis

本博客使用IDEA开发工具,通过Maven构建SpringBoot项目,初始化项目添加的依赖有:spring-boot-starter-jdbc、spring-boot-starter-web、mysql-connector-java,这里为了演示整合SpringBoot,初始时只勾选了这几项,其他的启动器根据自己实际项目选择添加,如何使用IDEA构建SpringBoot项目这就不再过多赘述了。

版本:

  • IDEA 2020.1.3
  • Maven 3.6.3
  • MySql 8.0.19
  • SpringBoot 2.3.2

这里构建项目使用的是SpringBoot自带的Hikari数据源,也可以根据自己项目选择Druid、c3p0等。

如果使用Druid数据源可以参考上一篇博客:SpringBoot学习之整合Druid的简单应用

1.环境搭建

首先在SpringBoot项目的pom.xml文件中添加 mybatis-spring-boot-starter 依赖


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    2.1.3

Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

配置application.yaml中的数据源,这里使用更加直观的yaml格式文件,也可以使用properties格式文件

spring:
  datasource:
    username: root
    password: 970628
    url: jdbc:mysql://localhost:3306/school?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

1.url中在mysql的8版本以上的可能需要设置时区: serverTimezone=UTC
2.driver-class-name 数据库驱动,如果是mysql8版本以上的使用 com.mysql.cj.jdbc.Driver,低版本的使用 com.mysql.jdbc.Driver

2.编写pojo类

这里我使用我自建数据表user来做业务例子

SpringBoot学习之整合Mybatis_第1张图片

编写user对应的pojo类,包括有参无参构造及Getter、Setter方法

package com.tioxy.pojo;

public class User {
    private Integer id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(Integer id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

3.编写Mapper及对应的Mapper.xml文件

这里我使用Mapper.xml编写SQL语句,也可以使用注解方式,两种方式都可以,看个人喜好。我选择xml文件的原因是编写SQL语句灵活、扩展性好,我以xml文件为例

编写UserMapper接口,这里添加了@Mapper则省去写Mapper实现类了

package com.tioxy.mapper;

import com.tioxy.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
@Mapper
@Repository
public interface UserMapper {
    /**
     * 查询所有的用户
     * @return
     */
    List queryUserList();
}

在resources添加了mybatis.mapper包,在mapper下添加UserMapper.xml文件




    

由于这里我们将Mapper接口与Mapper.xml文件放在了不同的包下,需要我们在application.yaml添加Mapper自动扫描包的配置

# 整合Mybatis
mybatis:
  type-aliases-package: com.tioxy.pojo
  # 原来mapper与mapper.xml在同一路径,现在不在同一路径需要设置下面的参数,目的就是告诉*.xml文件的路径
  mapper-locations: classpath:mybatis/mapper/*.xml

完整的配置文件如下图:

SpringBoot学习之整合Mybatis_第2张图片

如果将Mapper接口与Mapper.xml文件放在了相同的包下,需要在POM.xml文件添加maven配置资源过滤问题


    
        src/main/java
        
            **/*.xml
        
        true
    

4.测试验证

添加一个控制器请求,进行验证,代码如下:

@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/queryUserList")
    public List queryUserList(){
        return userMapper.queryUserList();
    }
}

启动项目运行输入:http://localhost:8080/queryUserList

SpringBoot学习之整合Mybatis_第3张图片

测试成功!

最后附上我的项目结构

SpringBoot学习之整合Mybatis_第4张图片

文章参考:
狂神说Java之SpringBoot整合Mybatis课程学习:https://www.bilibili.com/video/BV1PE411i7CV?p=33

你可能感兴趣的:(SpringBoot学习之整合Mybatis)