Mybatis Plus 这篇就够了

1. pom.xml

引入依赖

MybatisPlus的starter集成了Mybatis和MybatisPlus的所有功能

代码:

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

2. mapper

自定义Mapper继承MybatisPlus提供的BaseMapper接口:

注意BaseMapper<T>的泛型要指定所操作的实体类的类型

如下面的我们要对User实体类进行操作则继承BaseMapper<User>

示例:

public interface UserMapper extends BaseMapper<User>{
}

方法名:

insert() 新增

selectById() 查询

selectBatchIds() 批量查询

updateById() 更新

deleteById() 删除

3.数据库注解

MybatisPlus通过扫描实体类,反射获取实体类的信息作为数据库表的信息

这对数据库表的要求:

1.类名驼峰下划线作为表名

2.名为id的字段作为主键

3.变量名驼峰转下划线作为表的字段名

如果不满足以上的条件就需要使用相关的注解进行绑定

@TableName 指定表名

@TableId 用来指定表中主键字段的信息

如果主键自增使用格式:@TableId(value="id",type=IdType.AUTO)

@TableField 用来指定表中普通字段信息

如果数据库中不存在该字段则使用: @TableField(exist = false)

4. application.yml

代码:

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 1234mybatis-plus:type-aliases-package: com.example.springbootdemo.pojomapper-locations: classpath*:/mapper/**/*.xmlconfiguration:map-underscore-to-camel-case: truecache-enabled: falseglobal-config:db-config:id-type: assign_idupdate-strategy: not_null

5.条件构造器

QueryWrapper 和 LambdaQueryWrapper构建select、delete、update的where条件

UpdateWrapper 和 LambdaUpdateWrapper只有set语句比较特殊时才使用

尽量使用LambdaQueryWrapper 和 LambdaUpdateWrapper,避免硬编码

6.service

自定义 Service 继承 MybatisPlus 提供的 IService 接口:

注意IService<T>的泛型要指定所操作的实体类的类型

如下面的我们要对User实体类进行操作则继承IService<User>

示例:

public interface IUserService extends IService<User>{
}

imple:

示例:

public class UserServiceImple extends ServiceImple<UserMapper,User> implements IUserService{}

Restful风格实现接口

接口请求方式请求路径请求参数返回值
新增用户POST/user用户表单实体
删除用户DELETE/user/{id}用户id
修改用户PUT/user/{id}/operation/{university}

用户id

修改的学校

查询用户GET/user/{id}用户id用户VO
批量查询用户GET/user用户id集合用户VO集合

Swagger依赖 

        <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.1.0</version></dependency>

IService批量添加

在MySQL中 将java的application.yml的url中将rewriteBatchedStatements=true

7.代码自动生成器插件

MyBatisPlus

8.逻辑删除

在application.yml中进行配置逻辑删除的实体字段

logic-delete-field 填写逻辑删除的实体字段名

logic-delete-value 填写逻辑已经删除的值(默认为1)

logic-not-delete-value 填写逻辑未删除的值 (默认为0)

mybatis-plus:global-config:db-config:logic-delete-field: flagDeletelogic-delete-value: 1logic-not-delete-value: 0

9.枚举处理器

(1)给枚举中与数据库对应value值添加@EnumValue注解

(2)在application.yml中加入:

mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

9.JSON处理器

例如User表中存在Json类型的字段:

可以按照如下的方式进行处理:

(1)给User类加上@TableName(value="user",autoResultMap = true)注解

(2)给User表中相应的json类型字段加上@TableField(typeHandler = JacksonTypeHandler.class)注解

10.分页插件

PaginationInnerInterceptor

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA代理模式详解

代理模式 1 代理模式介绍 在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式. 代理模式(Proxy Design Pattern ) 原始定义是&#xff1a;让你能够提供对象的替代…

LEETCODE 75. 颜色分类

class Solution { public:void sortColors(vector<int>& nums) {//先定0int i,j;i0;j0;int nnums.size();while(j<n){if(nums[j]0){int tmpnums[j];nums[j]nums[i];nums[i]tmp;j1;i1;}else{j1;}}//对[i,n]处理&#xff0c;定1int i1i;ji1;while(j<n){if(nums[j…

全新 鸿蒙系统

一&#xff0c; 开发框架 基础 二&#xff0c; 官网地址 文档开发&#xff1a;华为HarmonyOS智能终端操作系统官网 | 应用设备分布式开发者生态 三&#xff0c;基础了解 鸿蒙系统是基于 js 和 ts 衍生出来的一个东西 要学 arkts 就要学习 js 和 ts 语法 四&#xff0c…

计算机毕业设计 | SSM 校园线上订餐系统(附源码)

1&#xff0c; 概述 1.1 项目背景 传统的外卖方式就是打电话预定&#xff0c;然而&#xff0c;在这种方式中&#xff0c;顾客往往通过餐厅散发的传单来获取餐厅的相关信息&#xff0c;通过电话来传达自己的订单信息&#xff0c;餐厅方面通过电话接受订单后&#xff0c;一般通…

哪种安全数据交换系统,可以满足信创环境要求?

安全数据交换系统是一种专门设计用于在不同网络环境之间安全传输数据的技术解决方案。这类系统确保数据在传输过程中的完整性、机密性和可用性&#xff0c;同时遵守相关的数据保护法规和行业标准。 使用安全数据交换系统的原因主要包括以下几点&#xff1a; 1、数据保护&#…

手写mybatis

手写mybatis mybatis仓库地址点击文字即可跳转 package com.mybatis.factory;import com.mybatis.mapper.ParameterMapping; import com.mybatis.retention.Selcet; import com.mybatis.token.GenericTokenParser; import com.mybatis.token.ParameterMappingTokenHandler; im…

#vu3# element plus表格的序号字段

在表格中添加序号字段&#xff0c;可以使用以下几种方式来实现 1. 利用索引 在<el-table>组件的<el-table-column>中使用插槽来显示序号。示例&#xff1a; <el-table :data"tableData"><el-table-column label"序号" type"i…

Jmeter接口自动化测试 —— Jmeter断言之Json断言

json断言可以让我们很快的定位到响应数据中的某一字段&#xff0c;当然前提是响应数据是json格式的&#xff0c;所以如果响应数据为json格式的话&#xff0c;使用json断言还是相当方便的。 还是以之前的接口举例 Url: https://data.cma.cn/weatherGis/web/weather/weatherFcst…

linux中的mtime,ctime,atime

目录 结论 文件 touch新文件 调整文件内容 echo直接修改 vi修改 修改文件属性 调整归属 调整权限 读取文件 目录 增加文件 调整目录下文件属性 访问目录下文件 删除文件 结论 mtime&#xff1a;文件内容的修改时间&#xff08;不含权限、属组修改&#xff09; …

springboot在线文档的集成方式

为了使用Swagger 3&#xff0c;您需要进行以下步骤来将其集成到您的项目中&#xff1a; 添加Swagger依赖项&#xff1a;在您的项目的构建文件中&#xff0c;例如pom.xml&#xff08;如果您的项目是基于Maven&#xff09;&#xff0c;添加Swagger库的依赖项。您可以在Maven中添…

实习记录——第十三天

明天要回家了&#xff0c;今天啥也不想干&#xff0c;看了一集小迪的课&#xff0c;日报写的堂而皇之&#xff0c;我都害怕&#xff0c;中午忘记吃饭了&#xff0c;吃了一点儿饼干&#xff0c;结果下班回校的时候&#xff0c;感觉手有些颤抖&#xff0c;我在网上看好了吃的地方…

mobi, azw, azw3, epub格式有什么区别

mobi, azw, azw3, epub格式有什么区别 对复杂排版的支持上是azw3好。 对使用方便来说是mobi好&#xff0c;因为可以邮件推送。 刚接触Kindle的小伙伴经常会被mobi、azw、azw3、epub等常见的几个格式搞的很凌乱&#xff0c;它们都有哪些区别呢&#xff1f;又各有什么优缺点呢&am…

1 引论

1 引论 操作系统&#xff08;OS&#xff09; -管理计算机系统资源、控制程序执行、改善人机界面、提供各种服务&#xff0c;并合理组织计算机工作流程和为用户方便有效地使用计算机&#xff0c;提供良好运行环境的一种系统软件 操作系统的目标 方便性 2. 有效性 3. 可扩充性 4…

C++泛编程(4)

类模板高级&#xff08;1&#xff09; 1.类模板具体化部分具体化完全具体化 2.类模板与继承 1.类模板具体化 有了函数模板具体化的基础&#xff0c;学习类模板的具体化很简单。类模板具体化有两种方式&#xff0c;分别为部分具体化和完全具体化。假如有类模板&#xff1a; te…

户用光伏电站设计优化方案:为行业打造示范标杆

不可再生能源的日益消耗促使了大家对新能源的使用和推广&#xff0c;光伏发电已经成为国家和企业大力推崇的技术。其中&#xff0c;户用光伏发电是重要组成部分&#xff0c;有非常大的市场发展空间。然而&#xff0c;如何优化设计&#xff0c;提高效率&#xff0c;降低成本&…

蓝桥杯备战(AcWing算法基础课)-高精度-减-高精度

目录 前言 1 题目描述 2 分析 2.1 第一步 2.2 第二步 3 代码 前言 详细的代码里面有自己的理解注释 1 题目描述 给定两个正整数&#xff08;不含前导 00&#xff09;&#xff0c;计算它们的差&#xff0c;计算结果可能为负数。 输入格式 共两行&#xff0c;每行包含一…

【Iceberg学习二】Branch和Tag在Iceberg中的应用

Iceberg 表元数据保持一个快照日志&#xff0c;记录了对表所做的更改。快照在 Iceberg 中至关重要&#xff0c;因为它们是读者隔离和时间旅行查询的基础。为了控制元数据大小和存储成本&#xff0c;Iceberg 提供了快照生命周期管理程序&#xff0c;如 expire_snapshots&#xf…

函数调用栈是什么

今天在力扣leetbook上看《图解算法数据结构》中的空间复杂度这一小节&#xff0c;看到如下这句话&#xff1a; “程序调用函数是基于栈实现的&#xff0c;函数在调用期间&#xff0c;占用常量大小的栈帧空间&#xff0c;直至返回后释放。” 这句话的意思是&#xff0c;在程序中…

2.3作业

作业要求&#xff1a; 程序代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h> typedef struct node //定义链表节点结构体&#xff1a;数据域、指针域 {int data;struct node *next; }*linklist;linklist create_node()//创建新节…

C++类和对象入门(三)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 前言 在c中&#xff0c;类型分为两类&#xff0c;一类是内置类型&#xff0c;另一类是自定义类型。 1.内置类型&#xf…