怎么使用MybatisPlus快速进行增删改查

发布时间:2022-08-05 15:52:14 作者:iii
来源:亿速云 阅读:193

怎么使用MybatisPlus快速进行增删改查

目录

  1. 引言
  2. MybatisPlus简介
  3. 环境准备
  4. 快速开始
  5. 增删改查操作
  6. 高级功能
  7. 总结

引言

在现代的Java开发中,ORM(对象关系映射)框架已经成为了不可或缺的一部分。Mybatis作为一款优秀的ORM框架,因其灵活性和强大的SQL映射能力而广受欢迎。然而,Mybatis在使用过程中需要编写大量的XML文件,这在一定程度上增加了开发的复杂性。为了解决这个问题,MybatisPlus应运而生。

MybatisPlus是Mybatis的增强工具,它在Mybatis的基础上进行了扩展,提供了许多便捷的功能,如自动生成SQL、分页查询、条件构造器等。使用MybatisPlus可以极大地提高开发效率,减少重复代码的编写。

本文将详细介绍如何使用MybatisPlus快速进行增删改查操作,并通过实例演示如何在实际项目中应用这些功能。

MybatisPlus简介

MybatisPlus(简称MP)是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,简化开发、提高效率。MybatisPlus的核心功能包括:

MybatisPlus的这些功能使得开发者可以更加专注于业务逻辑的实现,而不必过多关注底层的SQL操作。

环境准备

在开始使用MybatisPlus之前,我们需要准备好开发环境。以下是所需的环境和工具:

  1. JDK:建议使用JDK 8或以上版本。
  2. Maven:用于管理项目依赖。
  3. IDE:推荐使用IntelliJ IDEA或Eclipse。
  4. 数据库:本文以MySQL为例,其他数据库也可以使用。

快速开始

4.1 创建Spring Boot项目

首先,我们需要创建一个Spring Boot项目。可以通过Spring Initializr(https://start.spring.io/)快速生成一个Spring Boot项目。选择以下依赖:

生成项目后,导入到IDE中。

4.2 添加依赖

pom.xml中添加MybatisPlus的依赖:

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

4.3 配置数据源

application.propertiesapplication.yml中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus_demo?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

4.4 创建实体类

创建一个实体类,对应数据库中的表。假设我们有一个user表,表结构如下:

CREATE TABLE user (
    id BIGINT(20) NOT NULL AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT(11) DEFAULT NULL,
    email VARCHAR(50) DEFAULT NULL,
    PRIMARY KEY (id)
);

对应的实体类User如下:

package com.example.mybatisplusdemo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

4.5 创建Mapper接口

创建一个Mapper接口,继承BaseMapper,并指定泛型为实体类User

package com.example.mybatisplusdemo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplusdemo.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

4.6 创建Service接口和实现类

创建一个Service接口和实现类,用于处理业务逻辑:

package com.example.mybatisplusdemo.service;

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

public interface UserService extends IService<User> {
}
package com.example.mybatisplusdemo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.mybatisplusdemo.entity.User;
import com.example.mybatisplusdemo.mapper.UserMapper;
import com.example.mybatisplusdemo.service.UserService;
import org.springframework.stereotype.Service;

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

4.7 创建Controller

创建一个Controller类,用于处理HTTP请求:

package com.example.mybatisplusdemo.controller;

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

import java.util.List;

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

    @Autowired
    private UserService userService;

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

    @PostMapping("/save")
    public boolean save(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping("/update")
    public boolean update(@RequestBody User user) {
        return userService.updateById(user);
    }

    @DeleteMapping("/delete/{id}")
    public boolean delete(@PathVariable Long id) {
        return userService.removeById(id);
    }
}

增删改查操作

5.1 插入数据

使用save方法插入一条数据:

User user = new User();
user.setName("张三");
user.setAge(20);
user.setEmail("zhangsan@example.com");
userService.save(user);

5.2 更新数据

使用updateById方法更新一条数据:

User user = new User();
user.setId(1L);
user.setName("李四");
user.setAge(25);
user.setEmail("lisi@example.com");
userService.updateById(user);

5.3 删除数据

使用removeById方法删除一条数据:

userService.removeById(1L);

5.4 查询数据

使用list方法查询所有数据:

List<User> userList = userService.list();

使用getById方法根据ID查询一条数据:

User user = userService.getById(1L);

高级功能

6.1 分页查询

MybatisPlus内置了分页插件,可以方便地进行分页查询。首先需要在配置类中启用分页插件:

package com.example.mybatisplusdemo.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

然后可以使用Page对象进行分页查询:

Page<User> page = new Page<>(1, 10); // 查询第1页,每页10条数据
IPage<User> userPage = userService.page(page);
List<User> userList = userPage.getRecords();
long total = userPage.getTotal();

6.2 条件构造器

MybatisPlus提供了强大的条件构造器,可以方便地构建复杂的查询条件。例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张").ge("age", 20).orderByDesc("age");
List<User> userList = userService.list(queryWrapper);

6.3 自动填充

MybatisPlus支持自动填充公共字段,如创建时间、更新时间等。首先需要在实体类中标记需要自动填充的字段:

package com.example.mybatisplusdemo.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

@Data
@TableName("user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

然后需要实现MetaObjectHandler接口,定义自动填充的逻辑:

package com.example.mybatisplusdemo.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

6.4 逻辑删除

MybatisPlus支持逻辑删除功能,避免物理删除数据。首先需要在实体类中标记逻辑删除字段:

package com.example.mybatisplusdemo.entity;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    @TableLogic
    private Integer deleted;
}

然后在配置文件中启用逻辑删除:

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

6.5 乐观锁

MybatisPlus支持乐观锁机制,防止数据并发更新时出现冲突。首先需要在实体类中标记乐观锁字段:

package com.example.mybatisplusdemo.entity;

import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    @Version
    private Integer version;
}

然后在配置文件中启用乐观锁插件:

package com.example.mybatisplusdemo.config;

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
}

总结

通过本文的介绍,我们了解了如何使用MybatisPlus快速进行增删改查操作。MybatisPlus提供了许多便捷的功能,如自动生成SQL、分页查询、条件构造器、自动填充、逻辑删除和乐观锁等,这些功能可以极大地提高开发效率,减少重复代码的编写。

在实际项目中,MybatisPlus可以帮助我们更加专注于业务逻辑的实现,而不必过多关注底层的SQL操作。希望本文能够帮助读者更好地理解和使用MybatisPlus,并在实际项目中发挥其强大的功能。

推荐阅读:
  1. 如何在SpringBoot中使用MybatisPlus
  2. 使用SpringBoot怎么对MybatisPlus进行整合

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatisplus

上一篇:JavaScript中window对象如何使用

下一篇:vue-cli npm怎么解决vue项目中缺失core-js的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》