MybatisPlus的CRUD及拓展
创建一个简单的MybatisPlus项目在上一篇博客:MybatisPlus入门程序
一、CRUD
1. select
1.1 查找全部用户
//查
@Test
public void select(){
//查询全部用户
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
结果

1.2 通过id查找
@Test
public void select() {
//查 by id
User user = userMapper.selectById(1L);
System.out.println(user);
}
结果

2. insert
2.1 设置对象的所有属性(包括id的时候)
//增
@Test
public void insert(){
User user = new User(6L, "Windy", 12, "10213@qq.com");
int i = userMapper.insert(user);
if (i!=0){
System.out.println("添加成功");
User userWindy = userMapper.selectById(user.getId());
System.out.println("新用户名为:"+userWindy);
}else System.out.println("添加失败");
}
结果

2.2 只设置部分属性(不包含id)
@Test
public void insert() {
//User user = new User(6L, "Windy", 12, "10213@qq.com");
User user = new User();
user.setName("Windy");
user.setAge(12);
user.setEmail("10213@qq.com");
int i = userMapper.insert(user);
System.out.println(i);
System.out.println("新用户为:" + user);
}
结果

2.3 错误盘点
插入时没有自动配值,而是将0赋给id,再进行一次插入就报错
org.springframework.dao.DuplicateKeyException
第一次

第二次

原因:实体类User中的 id 使用的是原始数据类型 long
解决:将 long 改为 包装类 Long
3. update
注意使用updateById,这样才能通过id修改
//改
@Test
public void update() {
User user = new User(6L, "Ridden", 65, "67542@qq.com");
int i = userMapper.updateById(user);
if (i != 0) {
System.out.println("修改成功");
User userRidden = userMapper.selectById(user.getId());
System.out.println("修改后用户为:" + userRidden);
} else System.out.println("修改失败");
}
结果

4. delete
//删
@Test
public void delete() {
int i = userMapper.deleteById(6L);
if (i != 0) {
System.out.println("删除成功");
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}else System.out.println("删除失败");
}
结果

二、拓展
1. select
1.1 批量查询
@Test
public void select() {
//查询 1,2,3号用户
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
users.forEach(System.out::println);
}
结果

1.2 条件查询
@Test
public void selectByMap(){
HashMap<String,Object> map=new HashMap<>();
//自定义查询
map.put("name","Tom");
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
结果

1.3 分页查询
在配置类 MybatisPlusConfig 加入分页插件
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
测试
@Test
public void selectByPage(){
Page<User> page=new Page<>(1,5);
//current:当前页
//size:页面大小
userMapper.selectPage(page,null);
page.getRecords().forEach(System.out::println);
}
结果

2. delete
2.1 批量删除
@Test
public void delete() {
//批量删除
userMapper.deleteBatchIds(Arrays.asList(4L,5L,6L));
}
结果

2.2 map删除
@Test
public void deleteByMap() {
HashMap<String, Object> map = new HashMap<>();
map.put("name","Jack");
userMapper.deleteByMap(map);
}
结果

2.3 逻辑删除
物理删除:从数据库中直接移除
逻辑删除:在数据库中没有被移除,而是通过一个变量让其失效( delete=0 --> delete=1 )
比如:管理员可以查看删除记录
数据库添加deleted

User
package com.zy.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//对应数据库的主键(UUID,自增id,雪花算法,redis,zookeeper)
//@TableId(type = IdType.ID_WORKER) //全局唯一id
@TableId(type = IdType.AUTO) //主键自增,对应数据库字段一定要自增
//@TableId(type = IdType.INPUT) //手动输入
private Long id;
private String name;
private Integer age;
private String email; @TableLogic //逻辑删除
private Integer deleted; }
要点: @TableLogic
配置了添加逻辑删除插件
MybatisPlusConfig
//逻辑删除插件
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
配置文件配置逻辑删除
application.properties # 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value= 1
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value= 0
测试
@Test
public void deleteLog(){
userMapper.deleteById(5L);
}
结果

再查询被删用户
@Test
public void select() {
User user = userMapper.selectById(5L);
System.out.println(user);
}
结果

MybatisPlus的CRUD及拓展的更多相关文章
- Mybatis插件之Mybatis-Plus的CRUD方法
使用Mybatis-plus进行基本的CRUD(增查改删)操作. 实体类(User)代码: import com.baomidou.mybatisplus.annotation.IdType; imp ...
- 使用 Mybatis-plus 进行 crud 操作
1 Mybatis-Plus简介 1.1 什么是Mybatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化 ...
- 【mybatis-plus】CRUD必备良药,mybatis的好搭档
做开发,免不了对数据进行增删改查,那么mybatis-plus我觉得很适合我这个java新手,简单好用. 官网在这 一.什么是mybatis-plus MyBatis-Plus(简称 MP),是一个M ...
- SpringBoot整合Mybatis-plus实现增删查改
今天给大家分享一下SpringBoot整合Mybatis-plus的增删查改案例. pom.xml <?xml version="1.0" encoding="UT ...
- 详细!Mybatis-plus常用API全套教程,我就不信你看完还不懂!
前言 官网:Mybatis-plus官方文档 简化 MyBatis ! 创建数据库 数据库名为mybatis_plus 创建表 创建user表 DROP TABLE IF EXISTS user; C ...
- 一个简单的springboot+mybatis-plus+thymeleaf的学生管理系统
一.登录功能 1.1登录所涉及的功能主要包括拦截器,过滤器,用户在未登录的时候,访问页面会阻止访问的,如图所示: 实现这个功能的主要代码如下所示 1 //拦截器 2 public class Logi ...
- 从架构师角度谈谈mybatis-plus可能存在的问题
存在这么一个情况:对于缺营养的人来说,医生更倾向于建议他选择纯牛奶,而不是有机奶(因其有添加剂).然而,大部分人却更加倾向于选择有机奶, 因其口感不错,因此,对于选择纯牛奶还是有机奶,这是个博弈问题. ...
- SpringBoot | 3.3 整合MyBatis-Plus
目录 前言 1. 什么是MyBatis-Plus 1.1 BaseMapper接口 1.2 IService接口 2. 整合MyBatis-Plus以及CRUD功能 2.1 导入场景依赖 2.2 CR ...
- 19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
随机推荐
- Noip模拟29(瞎眼忌) 2021.8.3
T1 最长不下降子序列 在此记录自己的瞎眼... 考场上像一个傻$der$,自己为了防范上升序列和不下降序列的不同特意的造了一组$hack$数据来卡自己:(第一行是序列长度,第二行是序列) 6 1 5 ...
- 最长子序列(线性DP)学习笔记
子序列和子串不一样.子串要求必须连续,而子序列不需要连续. 比如说\(\{a_1,a_2\dots a_n\}\),他的子串就是\(\{a_i,a_{i+1},\dots, a_j|1\leq i\l ...
- n阶行列式计算
1.化为上下三角 该类型的矩阵.行列式在之前写过(https://www.cnblogs.com/wangzheming35/p/12906624.html),也建议记住这个行列式的结论. 当然不仅仅 ...
- Python import commands ImportError: No module named 'commands'
ImportError: No module named 'commands' 在Python3中执行shell脚本,想要获取其执行状态和标准输出.错误输出 的数据,遇到这个错误,原因是command ...
- Python 语法错误 except Exception, e: ^ SyntaxError: invalid syntax
出这个问题是因为python2和python3 语法有些不同 python2 和 3 处理 except 子句的语法有点不同,需要注意: Python2 try: print ("hello ...
- inline hook原理和实现
inline hook是通过修改函数执行指令来达到挂钩的.比如A要调用B,但人为地修改执行流程导致A调用了C,C在完成了自己的功能后,返回B再执行. 修改这段指令前首先要获取修改权限 由于要修改的代码 ...
- element-UI 中的upload组件如何添加token?
<el-upload :show-file-list="false" :on-error="errmsg" :headers="headers& ...
- RedHat 7.0 下 FTP 服务的安装,启动,配置,以及虚拟用户的建立
(注意! 区分shell命令和往配置文件里加的代码不同) 一:ftp服务的安装,启动和启用. 1:vim /etc/sysconfig/selinux 改为disabled后重启 ...
- ELK集群之kafka(7)
原理待补充: kafka依赖于zookeeper集群. 都是基于java 由于源码安装jdk 未声明bin下java 在各自server配置文件中声明 JAVA_HOME=/usr/local/jdk ...
- Part 37 Difference between $scope and $rootScope
In this video we will discuss the difference between $scope and $rootScope. The main difference is t ...