Springboot整合mybatis

在 Spring+SpringMVC 中整合 MyBatis 步骤需要在配置文件里配置多个 Bean,比如MapperScannerConfigurer,SqlSessionFactoryBean 等,步骤还是比较复杂的,Spring Boot 中对此做了进一步的简化,使 MyBatis 基本上可以做到开箱即用,本章来学习怎么在 Spring Boot 中整合Mybatis,也就是搭建SSM环境 。

Spring Boot中整合mybatis,主要有两种方式。

方式1:xml文件

方式2:注解方式

一 方式1 使用XML方式整合Mybatis

使用Xml方式也就是将Sql语句写在**Mapper.xml文件中

1.先用idea创建一个添加mybatis需要的相关依赖的工程。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建出来的项目结构如下:

在这里插入图片描述

2.准备数据库和表

在这里插入图片描述

3.创建表映射类

在这里插入图片描述

之前创建表映射类时,我们是手动添加set,get,toString方法和构造方法等,比如像这样

在这里插入图片描述

现在,我们可以添加一个Lombok 依赖来简化这些代码

Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现  Lombok,开发人员可以节省构建诸如 hashCode()和equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。

在这里插入图片描述

<!--简化bean代码-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

添加需要的注解,通过注解来实现自动帮我们加入get,set,构造方法等。

@Data  /* 生成getter,setter ,toString等函数*/
@NoArgsConstructor /*生成无参构造函数*/
@AllArgsConstructor /*生成有参构造函数*/

在这里插入图片描述

package com.test.ssm.pojo;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data  /* 生成getter,setter ,toString等函数*/
@NoArgsConstructor /*生成无参构造函数*/
@AllArgsConstructor /*生成有参构造函数*/
public class Users {

    private int id;

    private String uname;

    private String pwd;


}

4.创建mapper文件

4.1创建UsersMapper.xml文件,并添加sql语句

<?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.test.ssm.mapper.UsersMapper">

    <select id="getAllUsers" resultType="Users">
        SELECT * FROM users
    </select>
</mapper>

在这里插入图片描述

4.2 创建mapper对应的代理接口

在这里插入图片描述

5.创建Service层和Service的实现层

在这里插入图片描述

在这里插入图片描述

6.创建控制层(也就是web层)

在这里插入图片描述

7.添加配置信息

7.1添加数据库链接信息和设置mybatis中的别名信息

#数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/boot?characterEncoding=utf8&serverTimezone=GMT%2B8

#mybatis配置
mybatis.type-aliases-package=com.test.ssm.pojo

在这里插入图片描述

7.2在应用程序入口类上配置@MapperScan扫描mapper接口文件所在包!

在这里插入图片描述

@MapperScan(basePackages = "com.test.ssm.mapper")

7.3 在pom.xml文件中添加识别java目录下xml文件的配置

这是Maven 带来的问题,就是 java 目录下的 xml 资源在项目打包时会被忽略掉,所以,如果 UsersMapper.xml 放在Java目录下,需要在 pom.xml 文件中再添加如下配置,避免打包时 java 目录下的 XML 文件被自动忽略掉:

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
</resources>

在这里插入图片描述

8.运行

在这里插入图片描述

在这里插入图片描述

二 方式2 使用注解方式整合Mybatis

方式2和方式1相比,主要是mapper文件的区别,所以除了第4和第7步有点不一样以外,其它步骤相同。

1.先用idea创建一个添加mybatis需要的相关依赖的工程。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建出来的项目结构如下:

在这里插入图片描述

2.准备数据库和表

在这里插入图片描述

3.创建表映射类

在这里插入图片描述

之前创建表映射类时,我们是手动添加set,get,toString方法和构造方法等,比如像这样

在这里插入图片描述

现在,我们可以添加一个Lombok 依赖来简化这些代码

Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现  Lombok,开发人员可以节省构建诸如 hashCode()和equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。

在这里插入图片描述

添加需要的注解,通过注解来实现自动帮我们加入get,set,构造方法等。

@Data  /* 生成getter,setter ,toString等函数*/
@NoArgsConstructor /*生成无参构造函数*/
@AllArgsConstructor /*生成有参构造函数*/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gucvji3j-1669985359061)(pic/f12.png)]

4.创建mapper代理接口

​ 不需要创建UsersMapper.xml文件,只需要创建UsersMapper接口就可以,将之前xml文件中的sql语句通过注解的方式写到接口中。

在这里插入图片描述

5.创建Service层和Service的实现层

在这里插入图片描述

在这里插入图片描述

6.创建控制层(也就是web层)

在这里插入图片描述

7.添加配置信息

7.1添加数据库链接信息和设置mybatis中的别名信息

#数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/boot?characterEncoding=utf8&serverTimezone=GMT%2B8

#mybatis配置
mybatis.type-aliases-package=com.test.ssm.pojo

在这里插入图片描述

7.2在应用程序入口类上配置@MapperScan扫描mapper接口文件所在包!

在这里插入图片描述

8.运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiuIdGw6-16在这里插入图片描述

在这里插入图片描述