首页 > 其他分享 >实战系列(二)MybatisPlus详细介绍,包含代码详解

实战系列(二)MybatisPlus详细介绍,包含代码详解

时间:2023-10-25 18:32:35浏览次数:43  
标签:实战 MybatisPlus List example 详解 import com id


MybatisPlus 是一个功能强大的 MyBatis 增强工具,它提供了丰富的特性来简化操作数据库的代码。它主要用于简化 JDBC 操作,节省开发时间,并能够自动化完成所有的 CRUD 代码。

实战系列(二)MybatisPlus详细介绍,包含代码详解_mybatis

MybatisPlus官网:https://baomidou.com/

1. MybatisPlus 的基本功能

  • 提供丰富的 CRUD 方法,包括:insert、selectById、selectBatchIds、update、delete 等。
  • 提供乐观锁功能,支持版本号管理。
  • 提供查询条件生成器,简化查询条件的编写。
  • 提供代码生成器,自动生成实体类、Mapper 接口、Service 类、Controller 类等。
  • 支持多种数据库类型,如:MySQL、Oracle、SQL Server 等。

2. 基本用法

(1) 分页插件 MybatisPlus 的分页逻辑底层是通过分页插件来完成的。分页插件的实现原理主要是基于 MyBatis 的动态 SQL 生成,通过 Mybatis 的 count 和 offset 的实现来实现分页功能。 (2) 自动装配 MybatisPlus 提供了自动装配功能,可以自动根据实体类生成对应的 Mapper 接口、Service 类和 Controller 类。自动装配的实现原理是基于 Mybatis 的 XML 配置文件,通过解析 XML 文件生成对应的 Java 代码。 (3) 条件查询 MybatisPlus 提供了丰富的查询方法,如 eq、ne、gt、ge、lt、le、like 等。这些查询方法底层是通过 MyBatis 的动态 SQL 生成来实现的,通过拼接 SQL 语句来实现条件查询。

  1. eq:等于 用于查询字段值等于指定值的记录。
List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("age", 18));
  1. ne:不等于 用于查询字段值不等于指定值的记录。
List<User> users = userMapper.selectList(new QueryWrapper<User>().ne("age", 18));
  1. gt:大于 用于查询字段值大于指定值的记录。
List<User> users = userMapper.selectList(new QueryWrapper<User>().gt("age", 18));
  1. ge:大于等于 用于查询字段值大于等于指定值的记录。
List<User> users = userMapper.selectList(new QueryWrapper<User>().ge("age", 18));
  1. lt:小于 用于查询字段值小于指定值的记录。
List<User> users = userMapper.selectList(new QueryWrapper<User>().lt("age", 18));
  1. le:小于等于 用于查询字段值小于等于指定值的记录。
List<User> users = userMapper.selectList(new QueryWrapper<User>().le("age", 18));
  1. like:模糊查询 用于根据指定的字符串进行模糊查询。可以指定匹配前缀、后缀或指定多个字符。
// 匹配前缀  
List<User> users = userMapper.selectList(new QueryWrapper<User>().like("name", "zhang%"));
// 匹配后缀  
List<User> users = userMapper.selectList(new QueryWrapper<User>().like("name", "%zhang"));
// 匹配多个字符  
List<User> users = userMapper.selectList(new QueryWrapper<User>().like("name", "z%a%"));

3. MybatisPlus 的配置

在 Spring Boot 项目中,我们可以通过以下步骤来配置 MybatisPlus:

  • 在 pom.xml 文件中添加 MybatisPlus 的依赖:
<dependency>  
   <groupId>com.baomidou</groupId>  
   <artifactId>mybatis-plus-boot-starter</artifactId>  
   <version>3.4.3.1</version>  
</dependency>
  • 在 application.properties 文件中配置 MybatisPlus:
mybatis-plus.mapper-locations=classpath:mapper/*.xml  
mybatis-plus.type-aliases-package=com.example.demo.entity  
mybatis-plus.global-config.id-type=auto  
mybatis-plus.global-config.db-config.logic-delete-value=1  
mybatis-plus.global-config.db-config.logic-not-delete-value=0

4. MybatisPlus 的实体类、Mapper 接口、Service 类和 Controller 类

  • 实体类(Entity):实体类是用于映射数据库表的,通常包含了表的字段以及对应的 getter 和 setter 方法。例如,假设有一个用户表(user),那么对应的实体类可能如下:
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;  
import com.baomidou.mybatisplus.annotation.TableId;  
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("user")  
public class User {  
   @TableId(type = IdType.AUTO)  
   private Long id;  
   private String name;  
   private Integer age;  
   private String email;
   // getter 和 setter 方法  
}
  • Mapper 接口:Mapper 接口用于定义与数据库表相关的操作。例如,对于用户表(user),对应的 Mapper 接口可能如下:
package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;  
import com.example.demo.entity.User;  
import org.apache.ibatis.annotations.Mapper;
@Mapper  
public interface UserMapper extends BaseMapper<User> {  
}
  • Service 类:Service 类用于处理业务逻辑。它通常包含了一些与数据库操作相关的方法。例如,对于用户表(user),对应的 Service 类可能如下:
package com.example.demo.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;  
import com.example.demo.entity.User;  
import com.example.demo.mapper.UserMapper;  
import org.springframework.stereotype.Service;
@Service  
public class UserService extends ServiceImpl<UserMapper, User> {  
}
  • Controller 类:Controller 类用于处理 HTTP 请求。它通常包含了一些与数据库操作相关的方法。例如,对于用户表(user),对应的 Controller 类可能如下:
package com.example.demo.controller;
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 java.util.List;
@RestController  
@RequestMapping("/user")  
public class UserController {  
   @Autowired  
   private UserService userService;
   @GetMapping  
   public List<User> getUsers() {  
       return userService.list();  
   }
   @GetMapping("/{id}")  
   public User getUserById(@PathVariable Long id) {  
       return userService.getById(id);  
   }
   @PostMapping  
   public void addUser(@RequestBody User user) {  
       userService.save(user);  
   }
   @PutMapping("/{id}")  
   public void updateUser(@PathVariable Long id, @RequestBody User user) {  
       userService.updateById(id, user);  
   }
   @DeleteMapping("/{id}")  
   public void deleteUser(@PathVariable Long id) {  
       userService.removeById(id);  
   }  
}

标签:实战,MybatisPlus,List,example,详解,import,com,id
From: https://blog.51cto.com/u_15814859/8023764

相关文章

  • SOA与大数据实战:企业私有云平台规划和建设pdf电子版 何明璐 / 邹海锋
    SOA与大数据实战:企业私有云平台规划和建设pdf电子版下载作者:何明璐/邹海锋出版年: 2020-7ISBN: 9787302530695连接提取码:5f14介绍了传统企业推进私有云平台建设的一整套指导方法和实践步骤。通过先架构再实战,学习企业IT架构转型与架构设计方面能有一个循序渐进的过程和方法指......
  • Android系统SELinux详解
    前言SELinux是一种加强文件安全的一种策略,可以更好地保护我们的Android系统,比如限制系统服务的访问权限、控制应用对数据和系统日志的访问等措施,这样就降低了恶意软件的影响,并且可以防止因代码存在的缺陷而产生的对系统安全的影响。从系统安全方面考虑,SELinux是保护神,但是从软件开......
  • IOC和DI详解
    一、IOC控制反转它是一个概念,是一种思想。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。把对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。即是将new的过程交给spring容器去处理二、DI依赖注入:依赖注入DI是指程序运......
  • C++中vector容器详解
    参考链接:https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二......
  • 区块链技术软件开发师:打造区块链应用的专家,掌握开发实战技能
    区块链技术软件开发师:打造区块链应用的专家,掌握开发实战技能 专业技能:一、编程语言方面C/C++(必须熟悉C++语言),Golang(必须熟悉GO语言)、Python、Java、Solidity,能独立开发Chaincode熟练掌握golang的goroutine,  channel,gRPC等技术可以额外学习一些前端技术,HTML5、DIV、CSS、J......
  • Upgrade-Insecure-Requests:1 详解
    Upgrade-Insecure-Requests:1Upgrade-Insecure-Requests 是一个HTTP响应头,用于向浏览器发出指示,要求浏览器使用HTTPS加密协议来访问网站,以提高网站的安全性。当浏览器收到这个响应头时,它会自动将所有的HTTP请求转换为HTTPS请求,从而避免使用不安全的HTTP协议......
  • 从零构建以太坊智能合约到项目实战:掌握区块链编程的精髓 成为区块链编程大师
    从零构建以太坊智能合约到项目实战:掌握区块链编程的精髓成为区块链编程大师为什么说现在学习区块链才是最好的时机?区块链技术不只是能开发数字货币,不只是能进行ICO。当我分享一些区块链文章的时候,偶尔总会有人艾特我说,春哥,现在国家都不让炒币了,还弄个毛的区块链啊。我一般会......
  • Unity 3D定点数物理引擎实战系列
    1.1 BEPUphysicsint3D定点数物理引擎介绍 帧同步的游戏中如果用物理引擎,为了保证不同设备上的结果一致,需要采用定点数来计算迭代游戏过程中的物理运算。也就是我们通常说的定点数物理引擎(确定性物理引擎)。本系列教程给大家详细的讲解如何在你的项目中内置一个确定性物理引......
  • Unity 3D定点数物理引擎实战系列2
    1.2 BEPUphysicsint定点数3D物理引擎使用上一节給大家介绍了BEPUphysicsint的一些基本的情况,这节课我们来介绍它的基本使用,本节主要从以下5个方面来介绍:(1) 创建一个物理世界Space,并开启模拟迭代;(2) 添加一个物理物体Entity到世界;(3) 物理引擎的基本处理与操作使用;(......
  • Java类加载机制详解 | 京东云技术团队
    一.类加载器及双亲委派机制类加载器加载类备注启动类加载器(BootstrapClassLoader)JAVA_HOME/jre/lib无上级,无法直接访问由jvm加载拓展类加载器(ExtensionClassLoader)JAVA_HOME/jre/lib/ext父加载器为Bootstrap,显示为null。该类由Bootstrap加载应用类加载器(ApplicationClassLoa......