详解SpringBoot集成Mybatis

Posted haichuangdianzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解SpringBoot集成Mybatis相关的知识,希望对你有一定的参考价值。

1、新建springboot模块

  • 先新建一个空项目,在空项目中新建一个子模块。
    - 选择合适的java版本,默认使用spring官方服务器

- 注意第4个红框

- 在项目中可以根据需要添加依赖

- 因为要集成mybatis,所以要添加数据库,特别是数据库驱动一定要选
- 本次项目中共添加了5个依赖,如右侧红色框所示,这些依赖根据需要可以随时增减
- 把demo04去掉,此次项目模块名为MK
- 去掉后如图

2、mysql版本查看

新建完项目后,自动弹出pom.xml,可以先查看下mysql版本,因为在后面配置需要根据mysql版本,此时mysql版本号被隐藏了,不过可以进行查找,先点击③处

此时看到mysql版本号为一个变量mysql.version

- ctrl+F,查找,找到版本号为8.0.26,等下配置连接数据库的时候会用到。

3、添加依赖

 <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.20</version>
 </dependency>

4、数据源相关配置

  • 修改application.propertites文件,主要修改文件类型,改为yml

- 修改方式如下,也可以直接按shift+F6

- 修改后缀名为yml

- 在yml文件中填入以下内容,需要注意的是①处和②处。①处,由于之前提到过mysql的版本为8,需要填mysql.cj.jdbc,如果是版本8以下需要填mysql.jdbc,注意,这里虽然报红,但是问题不大。②处,test为数据库名字,根据实际填写。

- 第3、4行为数据库的账号和密码

spring:
  datasource:
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    type: com.alibaba.druid.pool.DruidDataSource

5、新建bean层

需要在com.xp包下新建bean包,同时新建Student类,这里介绍一个简单操作方法,在xp包下新建一个类,直接取名为bean.Student

  • 此时可以看到xp包下新建了bean包,bean包下新建了Student类。

  • 在Student类完成以下内容,注意变量参数要跟数据库的参数值对应!
public class Student {

    private Integer id;
    private String name;
    private Integer age;
    private Double score;
    
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }

    public Student() {
    }

    public Student(Integer id, String name, Integer age, Double score) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.score = score;
    }

    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 Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Double getScore() {
        return score;
    }

    public void setScore(Double score) {
        this.score = score;
    }
}

  • 同时在yml文件中进行配置,指定好后可以在bean中的Student类可以使用别名 student

6、新建dao层

  • 需要在com.xp包下新建dao包,同时新建StudentMapper接口,操作如下

  • 功能是查询所有数据库信息
package com.xp.dao;
import com.xp.bean.Student;
import java.util.List;

public interface StudentMapper {
    List<Student>  selectAllStudent();
}

  • 新建StudentMapper接口后还需要新建对应的映射文件,在resources下新建文件夹,文件夹名为mapper

- 新建文件名StudentMapper.xml

- 在文件中完成以下内容,注意第6行中的namespace,是到对应的StudentMapper接口文件;第9行中的student在第5点中提到过,第9~11行是数据库的查询语句,意思是将查询到的信息放到实体类student中

<?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">

<mapper namespace="com.xp.dao.StudentMapper">

    <!--查询多条数据-->
    <select id="selectAllStudent" resultType="student">
        SELECT id,name,age,score FROM t_student
    </select>
</mapper>
  • 在yml文件中配置下映射文件的路径

- 在StudentMapper接口文件中增加Mapper注释,这样才能扫描到

7、新建service层

  • 在xp包下新建service包,在该包里新建StudentService接口

public interface StudentService {

    List<Student> selectAllStudent();
    
}
  • 再在该包里新建实现类StudentServiceImpl

- 重写**selectAllStudent()**方法

  • 再添加以下内容。在service层中引入dao层中的studentMapper

@Service
public class StudentServiceImpl implements StudentService {

   @Autowired
   private StudentMapper studentMapper;

    @Override
    public List<Student> selectAllStudent() {
        return studentMapper.selectAllStudent();
    }
}

8、新建controller层

  • 新建controller包,在该包下新建StudentController

  • StudentController类引入studentService
@RestController
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping("select")
    public List<Student> selectStudent(){
        return studentService.selectAllStudent();
    }
}

  • 在主函数入口处运行

  • 输入网址:http://localhost:8080/select, 得到数据

补充说明

1、数据库内容暂时不写;

2、核心内容在于新建的四个层,bean层,dao层,service层,controller层

bean层

其中bean层也称实体层Entity层),主要用于定义与数据库对象的属性,提供get/set方法,带参和无参的构造方法。

*操作:*新建类

dao层

也叫持久层,主要是和数据库进行交互,向数据库发送sql语句,完成数据的增删改查任务。在该层中新建接口类,再新建对应的配置类

*操作:*新建接口,再新建对应的mapepr(这步没有新建的实现类,而是通过映射来实现)

service层

和DAO层一样都是先设计接口,再创建要实现的类。

*操作:*新建接口,再新建对应的实现类

Controller层

负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端

*操作:*新建类

小结:controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。
补充:View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示

也叫持久层,主要是和数据库进行交互,向数据库发送sql语句,完成数据的增删改查任务。在该层中新建接口类,再新建对应的配置类

*操作:*新建接口,再新建对应的mapepr(这步没有新建的实现类,而是通过映射来实现)

service层

和DAO层一样都是先设计接口,再创建要实现的类。

*操作:*新建接口,再新建对应的实现类

Controller层

负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端

*操作:*新建类

小结:controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。
补充:View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示

以上是关于详解SpringBoot集成Mybatis的主要内容,如果未能解决你的问题,请参考以下文章

详解SpringBoot集成Mybatis

详解SpringBoot集成Mybatis

SpringBoot 整合MyBatis案例详解

Springboot系列 集成接口文档swagger,使用,测试

Springboot系列 集成接口文档swagger,使用,测试

springboot+mybatis+mysql集成搭建