创建一个简单的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及拓展的更多相关文章

  1. Mybatis插件之Mybatis-Plus的CRUD方法

    使用Mybatis-plus进行基本的CRUD(增查改删)操作. 实体类(User)代码: import com.baomidou.mybatisplus.annotation.IdType; imp ...

  2. 使用 Mybatis-plus 进行 crud 操作

    1 Mybatis-Plus简介 1.1 什么是Mybatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化 ...

  3. 【mybatis-plus】CRUD必备良药,mybatis的好搭档

    做开发,免不了对数据进行增删改查,那么mybatis-plus我觉得很适合我这个java新手,简单好用. 官网在这 一.什么是mybatis-plus MyBatis-Plus(简称 MP),是一个M ...

  4. SpringBoot整合Mybatis-plus实现增删查改

    今天给大家分享一下SpringBoot整合Mybatis-plus的增删查改案例. pom.xml <?xml version="1.0" encoding="UT ...

  5. 详细!Mybatis-plus常用API全套教程,我就不信你看完还不懂!

    前言 官网:Mybatis-plus官方文档 简化 MyBatis ! 创建数据库 数据库名为mybatis_plus 创建表 创建user表 DROP TABLE IF EXISTS user; C ...

  6. 一个简单的springboot+mybatis-plus+thymeleaf的学生管理系统

    一.登录功能 1.1登录所涉及的功能主要包括拦截器,过滤器,用户在未登录的时候,访问页面会阻止访问的,如图所示: 实现这个功能的主要代码如下所示 1 //拦截器 2 public class Logi ...

  7. 从架构师角度谈谈mybatis-plus可能存在的问题

    存在这么一个情况:对于缺营养的人来说,医生更倾向于建议他选择纯牛奶,而不是有机奶(因其有添加剂).然而,大部分人却更加倾向于选择有机奶, 因其口感不错,因此,对于选择纯牛奶还是有机奶,这是个博弈问题. ...

  8. SpringBoot | 3.3 整合MyBatis-Plus

    目录 前言 1. 什么是MyBatis-Plus 1.1 BaseMapper接口 1.2 IService接口 2. 整合MyBatis-Plus以及CRUD功能 2.1 导入场景依赖 2.2 CR ...

  9. 19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

随机推荐

  1. 算法:杨辉三角(Pascal's Triangle)

    一.杨辉三角介绍 杨辉三角形,又称帕斯卡三角形.贾宪三角形.海亚姆三角形.巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉的<详解九章算法>得名,书中杨辉说明是引自贾 ...

  2. POJ 2584 T-Shirt Gumbo(二分图最大匹配)

    题意: 有五种衣服尺码:S,M,L,X,T N个人,每个人都有一个可以穿的衣服尺码的范围,例:SX,意思是可以穿S,M,L,X的衣服. 给出五种尺码的衣服各有多少件. 如果可以满足所有人的要求,输出 ...

  3. 第08课 OpenGL 混合

    混合: 在这一课里,我们在纹理的基础上加上了混合,它看起具有透明的效果,当然解释它不是那么容易,当希望你喜欢它. 简单的透明OpenGL中的绝大多数特效都与某些类型的(色彩)混合有关.混色的定义为,将 ...

  4. HTML基础强化

    1.如何理解HTML? HTML类似于一份word"文档" 描述文档的"结构" 有区块和大纲 2.对WEB标准的理解? Web标准是由一系列标准组合而成.一个网 ...

  5. Python学习笔记总结

    目录 Python学习笔记总结 前言 安装 数据类型 Hello,World 变量 字符串 首字母大写 全部小写 全部大写 Tab和换行符 格式化 去除空格 List列表 列表增删改查排序 遍历列表 ...

  6. ELK集群之kibana(4)

    kibane安装及基础使用 Kibana的安装 Kibana包含前端展示.es操作简化 yum localinstall kibana-7.6.2-x86_64.rpm -y Kibana配置修改ki ...

  7. idea连接数据库时区错误

    错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入"高级"选项卡,手动设 ...

  8. 详解calc()函数功能

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...

  9. Python基础(@property)

    class Point(object): # def get_score(self): # return self.score # def set_score(self,value): # if no ...

  10. JS表格显示时间格式

    <!-- JS代码区 --> <script type='text/javascript'> $(function() { var grid_selector23 = &quo ...