SpringBoot怎么整合MyBatis?看懂这篇就够了!

本文通过实际案例介绍了如何在SpringBoot项目中整合MyBatis进行数据库操作,并展示了如何利用Lombok简化实体类的getter/setter等方法。还涉及到了数据库连接配置、SQL提示和编码问题的解决方案。
摘要由CSDN通过智能技术生成

今天通过一个案例来学习一下 SpringBoot整合 MyBatis,以及介绍一下 lombok工具。

a22db64d8f28529a058dcf006ad89146.jpeg

一、整合

1、案例

以Mybatis查询所有用户数据为例。

1.1 准备

1)创建SpringBoot工程、数据库表user、实体类User

e931d7f2de4832277072e2a1901ff015.png

c5eed09f412624b6fb08eabfc0782cbf.png

在数据库 db1下新建一个 tb_user表,并添加一些数据,查询该表数据如下。

885c5ca8b3ad3edce1a2544e216f5eb9.png

建表对应的SQL语句如下

create table tb_user(
 id int primary key auto_increment comment 'ID,唯一标识',
 username varchar(20) not null unique comment '用户名',
 name varchar(10) not null comment '姓名',
 age int comment '年龄',
 gender char(1) default '男' comment '性别'
) comment '用户表';

创建 User类(com.itweb.pojo.User)

注:以下代码除了属性需要手动进行封装外,其余直接右键用快捷方法生成。注意属性的类型要和数据库字段的类型对应,否则会报错

package com.itweb.pojo;

public class User {
    // 封装属性
    private Integer id;
    private String username;
    private String name;
    private Short age;
    private String gender;
    // 带全部参数的构造方法
    public User(Integer id, String username, String name, Short age, String gender) {
        this.id = id;
        this.username = username;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    public User() { // 无参构造
    }
    // 提供对应的get和set方法
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Short getAge() {
        return age;
    }
    public void setAge(Short age) {
        this.age = age;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    // 提供对应的 toString方法
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }
}

2)引入Mybatis相关依赖(创建springboot工程时已经引入),配置Mybatis(数据库连接信息)-->在 application.properties配置文件中添加如下代码

# 配置数据库的连接信息-四要素
# 1.驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 2.数据库连接的url,这里数据库的名称要改为自己的
spring.datasource.url=jdbc:mysql://localhost:3306/db1
# 3.连接数据库的用户名
spring.datasource.username=root
# 4.连接数据库的密码,这里密码要改为自己的
spring.datasource.password=123456

3)编写SQL语句(注解/XML),这里使用注解 首先,创建一个 UserMapper接口(com.itweb.mapper.UserMapper)

package com.itweb.mapper;

import com.itweb.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper // 在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface UserMapper {
    // 查询全部用户信息
    @Select("select * from tb_user")
    public List<User> list();
}
1.2 测试

在 springboot整合单元测试的类中,编写测试方法进行测试。

package com.itweb;

import com.itweb.mapper.UserMapper;
import com.itweb.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest // springboot整合单元测试的注解
class SpringbootMybatis01ApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser(){
        List<User> userList = userMapper.list();
        // 以 stream流的形式输出,遍历得到user
        userList.stream().forEach(user ->{
            System.out.println(user);
                });
    }
}

运行结果如下

6ed4e9c1b16191474cbf39196e947412.png

注:控制台输出,出现中文乱码问题解决

点击 File ->Settings ->File Encodings,把编码格式都改为GBK,然后点击应用返回即可。重新运行测试类,发现控制台乱码问题已解决。

f04ac186f172344424b9c241477a333f.png

2、配置SQL提示

刚开始在mybatis中编写SQL语句是不会被IDEA识别的,这样当写错SQL时,不仅没有提示而且难以发现。可做如下配置让IDEA自动识别 mybatis中的SQL语句

bd9d2487e4b8d23f4d918da2235599c3.jpeg

并且如果IDEA没有与数据库建立连接的话,是不能识别表信息的。所以需要在IDEA中配置MySQL数据库连接,如下

9c0c221cb59045731540fb701c65b55b.jpeg

完成上述两步后,再次在mybatis中编写SQL语句就能使用 IDEA强大的智能提示功能了,减少错误,提高效率。

二、lombok

1、引出

以上述创建 User实体类为例,除了属性需要手动进行封装外,其余可以直接右键用快捷方法生成。虽然也很快速,但是代码看起来非常冗长和臃肿。而使用 lombok就是一种更快速,更方便的方法。

2、lombok概述

Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。

主要注解如下,都是按名称来的,非常好理解和记忆。其中,@Data注解是使用频率较高的。

76e2b70c8a48d1cd0bdfaa719bd07e07.jpeg

3、使用lombok

3.1 引入lombok依赖

在项目的pom.xml文件中添加如下lombok依赖

<!-- lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
3.2 改造 User实体类

删除之前快捷方法生成的get,set,toString,全参和无参构造方法,添加上相应的注解,如下

package com.itweb.pojo;

import lombok.*;

//@Getter
//@Setter
//@ToString
//@EqualsAndHashCode

@Data  // 相当于上面4个
@NoArgsConstructor  // 无参构造
@AllArgsConstructor // 全参构造

public class User {
    // 封装属性
    private Integer id;
    private String username;
    private String name;
    private Short age;
    private String gender;
}
3.3 测试运行

运行测试类里面的测试方法,OK!成功查询出所有数据。

48fcef7ba7861c7b1a9a2d384303bf16.jpeg

1a0549c0b6ffef4da29f207cb115d923.png

b4eea8579bffe97c8133f328b5109706.gif

喜欢就点击上方关注我们吧!

9f3e4d22fa33fcbc9cd6db66622b245e.png

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农后端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值