当前位置: 首页 > article >正文

MyBatis-Plus快速入门:从安装到第一个Demo

一、前言

在现代 Java 应用程序中,数据访问层的效率与简洁性至关重要。MyBatis-Plus 作为 MyBatis 的增强工具,旨在简化常见的数据操作,提升开发效率。它提供了丰富的功能,如自动生成 SQL、条件构造器和简单易用的 CRUD 操作,极大地减少了代码的冗余。

本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。

7d4e9e4c-d9f6-4ab1-8da2-e34f6d79de61

二、快速入门

以下是一个 MyBatis-Plus 入门 Demo,展示如何使用 MyBatis-Plus 进行基本的数据库操作。

2.1 数据库准备

在mysql,创建一张用户表,并插入数据

DDL语句

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user`
(
    id BIGINT NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

DML语句

DELETE FROM `user`;

INSERT INTO `user` (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

这里使用Dbeaver数据库客户端操作

image

image

2.2 创建SpringBoot工程

使用IDEA创建

image

image

image

image

2.3 添加依赖

在pom文件中,添加如下依赖

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.9</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>[8.0.0,9.0.0)</version> <!-- 选择 8.0.x 的最新版本 -->
        </dependency>

image

备注:springboot版本建议降低,后续启动可能报错

image

2.4 application.yml​配置

在项目中,一般使用yml​配置,先把工程中application.properties文件改为application.yml

image

image

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: 
    password: 

  mybatis-plus:
    mapper-locations: classpath:mapper/**/*.xml

2.5 创建实体类

在创建之前,建议先创建几个包,分别存放

image

image

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

2.6 创建 Mapper 接口

创建一个 Mapper 接口 UserMapper.java​:

image

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
}

2.7 创建 Service 类

创建一个服务类 UserService.java​:

image

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class UserService extends ServiceImpl<UserMapper, User> {
}

2.8 创建 Controller 类

创建一个控制器 UserController.java​:

image

@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;

    /**
     * 获取全部用户
     *
     * @return List<User>
     */
    @PostMapping("/list")
    public List<User> getAllUsers() {
        return userService.list();
    }

    /**
     * 根据用户id查询用户
     *
     * @param id 用户id
     * @return User
     */
    @GetMapping("/get_by_id")
    public User getUserById(@RequestParam("id") Long id) {
        return userService.getById(id);
    }

}

2.9 配置启动类扫描

在 Spring Boot 启动类中添加 @MapperScan​ 注解,扫描 Mapper 文件夹:

image

2.10 启动服务

image

2.11 测试

使用postman进行接口测试

  1. 查询全部用户

image

  1. 根据id查询用户

image

通过本篇文章,我们已经从安装到配置,再到实现第一个 Demo,全面了解了 MyBatis-Plus 的基本用法。MyBatis-Plus 的简化操作和强大功能,可以显著提高开发效率,减少样板代码,使我们能更专注于业务逻辑的实现。

随着对 MyBatis-Plus 的深入了解,后续会探索更多高级特性,如分页查询、逻辑删除和性能优化等,以进一步提升应用的灵活性和响应速度。


http://www.kler.cn/a/378429.html

相关文章:

  • Spring Boot 配置文件启动加载顺序
  • (七)Python运算符和优先级
  • Python小游戏19——滑雪小游戏
  • 3105. 最长的严格递增或递减子数组
  • 实体(Entity)详解
  • 【c++日常刷题】两个数字的交集、点击消除、最小花费爬楼梯
  • React Native 0.76 重大更新:新架构全面启用
  • 基于Python的自然语言处理系列(47):DistilBERT:更小、更快、更省、更轻的BERT版本
  • C++编程法则365天一天一条(344)理解std::optional的设计初衷
  • 数据库日志分析 ApexSQLLog
  • 基于SSM+VUE历史车轮网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的领导者
  • 2.若依vue表格数据根据不同状态显示不同颜色style
  • 【Flask框架】10、Flask项目拆分规范
  • 论文略读:Self-Knowledge Guided Retrieval Augmentation for Large Language Models
  • SQL之排名窗口函数RANK()、ROW_NUMBER()、DENSE_RANK() 和 NTILE() 的区别(SQL 和 Hive SQL 都支持)
  • C++ 多态原理
  • 提升教育质量:SpringBoot在线试题库系统
  • 微服务保护相关面试题
  • OpenAI官方提供撰写提示词最佳实践
  • Python3 No module named ‘pymysql‘
  • 【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信
  • 0,国产FPGA(紫光同创)-新建PDS工程
  • Java爬虫:在1688上“照片快递”上传图片
  • 【P2-3】ESP8266 WIFI模块在STA模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——TCP数据透传
  • 贪心算法(Greedy Algorithm)