Mybatis 框架 ( 三 ) Mybatis-Plus

news/2025/1/16 0:01:08/

4.Mybatis-plus

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

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上封装了大量常规操作,减少了SQL的编写量。

4.1.Maven依赖

使用时通常通过Springboot框架整合使用

并且使用Lombok框架简化实体类

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>

重点注意 :

  1. 与 SpringBoot整合时, 在启动类增加注解 @MapperScan("mapper接口路径 ") 或者 在每一个Mapper类上加 @Mapper注解

这样做的目的是为Spring框架能够扫描到这些Mapper接口, 并进行依赖注入到Service类

  1. Mybatis-Plus 在处理连表查询操作时, 还是要编写SQL语句进行连表的

但是结果集封装不再需要 resultMap 结点, 可以直接通过 resultType属性指向实体类

因为在实体类中通过 注解已经指明 属性与字段的对应关系

4.2.Service层

4.2.1.结构

在这里插入图片描述

4.2.2.代码

Mybatis-Plus 提供了 IService 接口 及 ServiceImpl实现类, 并封装大量操作方法

接口 :

// 接口
import com.yuan.mybatisplus.entity.Teacher;
import com.baomidou.mybatisplus.extension.service.IService;public interface TeacherService extends IService<Teacher> {}

实现类 :

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuan.mybatisplus.entity.Teacher;
import com.yuan.mybatisplus.mapper.TeacherMapper;
import com.yuan.mybatisplus.service.TeacherService;public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher>implements TeacherService{}

4.2.3.常用方法

.list(); //查询
.list(Wrapper<T>); //条件查询
.getById(Serializable); // 根据主键查询
.save(T); //插入数据
.updateById(T); //以 主键匹配 修改数据
.removeById(Serializable); // 根据 主键 删除
.removeByIds(Collection<? extends Serializable> ); // 根据主键集合 删除多条记录

4.3.Mapper层

4.3.1.结构

在这里插入图片描述

可以看到 BaseMapper定义了基本操作方法

4.3.2.代码

import com.yuan.mybatisplus.entity.Teacher;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface TeacherMapper extends BaseMapper<Teacher> {}

4.4.Entity 实体类

在实体类中通过注解说明与数据库表的对应关系

@TableName(value ="表名") // 这个不是必需的

@Data // lombok的注解, 封装了Setter/Getter/ toString()/ 无参构造/ 有参构造 等基本方法, 使代码更简洁

@TableId(type = IdType.AUTO) // 指明主键,

type = IdType.AUTO 用于说明 主键自增长 , 也可以

@TableField(exist = false) // 指明当前属性没有对应的字段

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;/*** 教师  teacher* @TableName teacher*/
@TableName(value ="teacher")
@Data
public class Teacher implements Serializable {/*** 讲师主键*/@TableId(type = IdType.AUTO)private Integer tchId;/*** 讲师姓名*/private String tchName;/*** 讲师介绍*/private String tchInfo;/*** 讲师性别*/private Boolean tchSex;/*** 讲师注册时间*/private Date tchRegTime;/*** 讲师头像*/private String tchPic;/*** 登录账号*/private String tchUser;/*** 登录密码*/private String tchPass;@TableField(exist = false)private static final long serialVersionUID = 1L;
}

4.5.Wrapper条件构造器

在这里插入图片描述

Wrapper : 条件构造抽象类,最顶端父类

AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件

QueryWrapper : Entity 对象封装操作类,不是用lambda语法

UpdateWrapper : Update 条件封装,用于Entity对象更新操作

AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。

LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper ***

LambdaUpdateWrapper : Lambda 更新封装Wrapper

具体方法参考官网


http://www.ppmy.cn/news/97076.html

相关文章

持续集成/持续交付——JenkinsFile详细使用教程

JenkinsFile详细使用教程 一、BlueOcean1、BlueOcean 概念2、BlueOcean 特性3、BlueOcean 安装 二、Pipeline 简介1、Jenkins Pipeline 概念2、Jenkinsfile 语法类型&#xff1a;3、采用Jenkins 任务页面输入a. Jenkins中创建一个 pipeline 任务b. Definition 中选择 Pipeline …

基于技能的工程方法及其在I4.0 中的应用

工业4.0 组件描述了两种架构&#xff0c;一种是面向服务的紧耦合分层系统架构&#xff0c;另一种基于协议的同层架构&#xff08;peer-to-peer&#xff09;。传统的工业自动化系统几乎都是分层架构。例如现场设备&#xff08;PLC&#xff09;将数据传送到控制中心&#xff0c;S…

1、Ovirt 开源虚拟化平台安装

ovirt官网 一、资源规划介绍 1.1、服务规划 ovirt版本 ovirt engine 4.3.10 ovirt node 4.3.10 ovirt.node01.opsvv.com 负责托管引擎服务 1.2、资源划分 1.2.1、节点划分 密码均为&#xff1a;12345678 Node02无法开启虚拟化&#xff0c;只演示加入集群节点使用 节点…

ThingsBoard教程(五五):规则节点解析 REST接口调用 REST API Call Node,发送邮件Send Email Node

REST接口调用 REST API Call Nod Since TB Version 2.0 调用外部 REST 服务器的 REST API。 配置: 端点 URL 模式 - 可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如 ${deviceType}。请求方法 - GET、POST、PUT、DELETE头 - 请求头,头或值可以是静态字符串…

软件外包开发代码管理工具

软件代码规范是为了提高代码质量、可读性和可维护性而制定的一系列编程规则和约定。代码管理工具则是用于协助团队成员共享、跟踪和合并代码的工具。今天和大家分享这方面的知识&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&a…

cf1627 D 思维

题意&#xff1a;https://www.luogu.com.cn/problem/CF1627D 思路&#xff1a;因为gcd只会越来越小&#xff0c;所以我们可以枚举所以数&#xff0c;看它最后是否会被加入集合。check的方法就是看所以集合中是i倍数的数的gcd是否最终等于i&#xff0c;是的则会。 /*keep on g…

20230527----重返学习-React复合组件通信方案-TodoList组件拆分-React组件二次封装

day-079-seventy-nine-20230527-React复合组件通信方案-TodoList组件拆分-React组件二次封装 React复合组件通信方案 统一一个组件 /src/views/VoteStyle.jsx import styled from "styled-components";const VoteStyle styled.divbox-sizing: border-box;margin: …

深入了解Golang中的反射机制

目录 反射 反射的分类 值反射 类型反射 运行时反射 编译时反射 接口反射 结构体反射 常用函数 值反射 类型反射 值反射和类型反射的区别 结构体反射 示例代码 反射 反射是指在程序运行时动态地检查和修改对象的能力。在Go语言中&#xff0c;通过反射可以在运行时…