springboot 整合 mybatis-plus

在创建 springboot 模块时,依赖勾选时没有 mybaits-plus 选项,原因是其未被加入。所以必须要手动引入依赖

复制代码
<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version>
</dependency>

将这个依赖引入后,原本的

复制代码
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
</dependency>

这个依赖便可以删除,因为第一个依赖包含了第二个

完整的依赖:

复制代码
<dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

在依赖引入后,便成功引入了 mybatis-plus,我们可以继承 baseMapper,这个类实现了很多的常用的数据库操作方法,可以直接使用

特别声明,使用 spring boot 3 以上的版本可能会报错,这里建议使用 2.7.8

复制代码
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
java 复制代码
@Mapper
public interface UserDao extends BaseMapper<User> {}

完善封装类:

java 复制代码
package com.example.springmabatisplus.Pojo;

public class User {

    private String username;
    private String password;
    private int id;

    public User() {
    }

    public User(String username, String password, int id) {
        this.username = username;
        this.password = password;
        this.id = id;
    }

    /**
     * 获取
     * @return username
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置
     * @param username
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取
     * @return password
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置
     * @param password
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    public String toString() {
        return "User{username = " + username + ", password = " + password + ", id = " + id + "}";
    }
}

写测试方法:

java 复制代码
@SpringBootTest
class SpringMabatisPlusApplicationTests {

    @Autowired
    UserDao userDao;

    @Test
    void contextLoads() {
        System.out.println(userDao.selectById(1));
    }

}

可能出现的问题:

1.找不到 bean:

解决方案,更换 spring boot 版本,建议使用 2 开头的版本,怀疑是 spring boot 3 与 mybatis-plus 不适配

2.报错找不到数据库表,或自动识别的表名与数据库实际表名不匹配

解决方案,给数据库表的封装类加上注解 @TableName("t_user"),引号中的内容是数据库的表名

相关推荐
YatHinLay1 分钟前
MyBatis 流式查询实战:ResultHandler 处理海量数据
java
天天被压力21 分钟前
【跨市场数据实战 #08】可转债折价机会怎么筛:3个接口抓比价、列表和实时盘口
java·人工智能·python
张某布响丸辣1 小时前
附件下载的安全边界:路径白名单、NAS 哨兵文件与 Redis Lua 一次性令牌
java·redis·redis lua·nas哨兵
YatHinLay2 小时前
Spring Boot + Calcite 实现跨库查询
java
酷炫码神2 小时前
MosMos 创意效果与能力边界展示
java
Wang's Blog2 小时前
Java 接入Redis: 使用Jedis操作Redis
java·服务器·redis
事圆则缓2 小时前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
shehuiyuelaiyuehao2 小时前
算法50,分治归并,数组中的逆序对
java·算法
烽学长2 小时前
(附源码)基于Springboot+vue的图书阅读分享系统的设计与实现
java·spring boot·后端
Ivanqhz2 小时前
数据搬运是性能关键
java·服务器·网络·人工智能·深度学习