为了账号安全,请及时绑定邮箱和手机立即绑定

从零开始的MyBatisPlus项目实战:入门级教程

标签:
杂七杂八
概述

深入了解MyBatisPlus项目实战,从快速上手安装与配置开始,到熟练掌握基本的CRUD操作与分页排序功能,直至实现项目中的用户管理模块,本教程全面指导如何利用MyBatisPlus高效构建数据库应用。通过实战案例,学习最佳实践与性能优化技巧,快速提升开发效率与代码质量。

简介

MyBatisPlus 是一个基于 MyBatis 的增强框架,它提供了丰富的 CRUD 操作、动态 SQL、分页、多表联查等特性,帮助开发者快速构建高效且易于维护的数据库应用。选择 MyBatisPlus 进行项目开发,主要是因为其简洁的 API、高性能的 SQL 生成、丰富的扩展性和易于理解的代码风格,能显著提升开发效率。

MyBatisPlus 快速上手

安装 MyBatisPlus

为了开始使用 MyBatisPlus,首先需要将其添加到你的项目依赖中。如果你的项目使用了 Maven 或者 Gradle,可以通过添加以下依赖到 pom.xmlbuild.gradle 文件来引入 MyBatisPlus:

<!-- Maven -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.4</version>
</dependency>

<!-- Gradle -->
dependencies {
    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.4'
}

配置基本环境

接着,需要配置 Spring Boot 的 application.propertiesapplication.yml 文件,以启用 MyBatisPlus 的全局配置:

# application.properties
mybatis-plus.type-aliases-package=com.example.demo.entity
mybatis-plus.global-config.db-config.id-type=INT_ID_TYPE
mybatis-plus.configuration.map-underscore-to-camel-case=true

通过这些配置,你可以指定实体类所在的包,以及全局配置的选项,如 ID 类型和驼峰命名规则。

创建第一个实体类

在创建实体类时,我们遵循以下规则:

  1. 字段与属性:实体类应包含与数据库表对应的属性,属性的名称应与数据库表中的列名保持一致。
  2. 注解:使用 MyBatisPlus 的注解来简化编码,比如 @TableId@Table@Column 等。
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDate;

@TableName("user")
public class User {

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField("username")
    private String username;

    @TableField("password")
    private String password;

    @TableField("registered_date")
    @JsonFormat(pattern="yyyy-MM-dd")
    private LocalDate registeredDate;

    // 构造方法、getters 和 setters 省略

    public User() {}

    public User(Long id, String username, String password, LocalDate registeredDate) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.registeredDate = registeredDate;
    }
}

MyBatisPlus 基本 CRUD 操作

为了简化 CRUD 操作,MyBatisPlus 提供了对应的接口:

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.User;

public interface UserService extends IService<User> {
    void save(User user);
    User getByUsername(String username);
    void update(User user);
    void deleteById(Long id);
}

通过这些接口,你可以轻松地执行创建、读取、更新和删除操作。

分页与排序

实现分页查询,MyBatisPlus 提供了强大的分页插件:

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;

    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public void save(User user) {
        userMapper.insert(user);
    }

    @Override
    public User getByUsername(String username) {
        return userMapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getUsername, username));
    }

    @Override
    public void update(User user) {
        userMapper.updateById(user);
    }

    @Override
    public void deleteById(Long id) {
        userMapper.deleteById(id);
    }

    public Page<User> findUsersByPage(int pageNum, int pageSize) {
        Page<User> page = new Page<>(pageNum, pageSize);
        return userMapper.selectPage(page, new QueryWrapper<>());
    }
}

项目实战案例

以构建一个简单的用户管理功能为例,实现用户注册、登录、查询、更新和删除操作。

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

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

    @Autowired
    private UserService userService;

    @PostMapping
    public void registerUser(@RequestBody User user) {
        userService.save(user);
    }

    @GetMapping("/{username}")
    public User getUserByUsername(@PathVariable String username) {
        return userService.getByUsername(username);
    }

    @PutMapping
    public void updateUser(@RequestBody User user) {
        userService.update(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteById(id);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.list();
    }
}

最佳实践与优化技巧

  • 避免 SQL 注入:MyBatisPlus 使用预编译的 SQL,确保了安全性。
  • 性能优化:合理使用缓存,如 MyBatisPlus 的结果集缓存,可以显著提高查询性能。
  • 代码可读性:保持代码简洁、命名清晰,利用 MyBatisPlus 的注解减少冗余的配置。
  • 扩展性:利用 MyBatisPlus 的自定义插件功能,可以轻松添加个性化需求。

通过本教程的学习,你可以快速上手 MyBatisPlus,构建高效且易于维护的数据库应用。在实践中不断探索和优化,是提升开发技能的关键。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消