MyBatis Plus 2.3 个人笔记-02-基本注解
- 实体类注解
/*
* MybatisPlus会默认使用实体类的类名到数据中找对应的表.
*
*/
@TableName("tbl_employee")
public class Employee extends Model<Employee> { private static final long serialVersionUID = 1L; /*
* @TableId:
* value: 指定表中的主键列的列名, 如果实体属性名与列名一致,可以省略不指定.
* type: 指定主键策略. ID_WORKER 全局唯一ID,内容为空自动填充(默认配置)
*/
@TableId(value = "id", type = IdType.ID_WORKER)
private Long id; private String lastName; private String email; private String gender; private Integer age; /**
* 声明该属性不是数据库中字段
*/
@TableField(exist = false)
private String notExist; }
/* 省略get set */
- 使用通用CURD方法
- 删除
/**
* 通用 删除操作
*/
@Test
public void testCommonDelete() {
//1 .根据id进行删除
Integer result = employeeMapper.deleteById(13);
/*
==> Preparing: DELETE FROM tbl_employee WHERE id=?
==> Parameters: 13(Long)
<== Updates: 0
*/
//2. 根据 条件进行删除
// Map<String,Object> columnMap = new HashMap<>();
// columnMap.put("last_name", "MP");
// columnMap.put("email", "mp@atguigu.com");
// Integer result = employeeMapper.deleteByMap(columnMap);
// System.out.println("result: " + result );
/*
==> Preparing: DELETE FROM tbl_employee WHERE last_name = ? AND email = ?
==> Parameters: MP(String), mp@atguigu.com(String)
<== Updates: 0
*/
//3. 批量删除
// List<Integer> idList = new ArrayList<>();
// idList.add(3);
// idList.add(4);
// idList.add(5);
// Integer result = employeeMapper.deleteBatchIds(idList);
// System.out.println("result: " + result );
}
/*
==> Preparing: DELETE FROM tbl_employee WHERE id IN ( ? , ? , ? )
==> Parameters: 35(Integer), 45(Integer), 55(Integer)
<== Updates: 0
*/
条件构造器
实体包装器,用于处理 sql 拼接,排序,实体参数查询等!
补充说明: 使用的是数据库字段,不是Java属性!
/**
* 条件构造器 删除操作
*
*/
@Test
public void testEntityWrapperDelete() { employeeMapper.delete(
new EntityWrapper<Employee>()
.eq("last_name", "Tom")
.eq("age", 22)
);
}
/*
==> Preparing: DELETE FROM tbl_employee WHERE (last_name = ? AND age = ?)
==> Parameters: Tom(String), 22(Integer)
<== Updates: 0
*/
- 修改
- 修改
/**
* 通用 更新操作
*/
@Test
public void testCommonUpdate() {
//初始化修改对象
Employee employee = new Employee();
employee.setId(7L);
employee.setLastName("小泽老师");
employee.setEmail("xz@sina.com");
employee.setGender("0");
// updateById 实体类为空的列 自动跳出,不修改
Integer result = employeeMapper.updateById(employee);
/*
==> Preparing: UPDATE tbl_employee SET last_name=?, email=?, gender=? WHERE id=?
==> Parameters: 小泽老师(String), xz@sina.com(String), 0(String), 7(Long)
<== Updates: 0
*/
// updateAllColumnById 所有列都会修改
Integer result = employeeMapper.updateAllColumnById(employee);
/*
==> Preparing: UPDATE tbl_employee SET last_name=?,email=?,gender=?,age=?,version=? WHERE id=?
==> Parameters: 小泽老师(String), xz@sina.com(String), 0(String), null, null, 7(Long)
<== Updates: 0
*/
}
/**
* 条件构造器 修改操作
*/
@Test
public void testEntityWrapperUpdate() { Employee employee = new Employee();
employee.setLastName("苍老师");
employee.setEmail("cls@sina.com");
employee.setGender("0"); employeeMapper.update(employee,
new EntityWrapper<Employee>()
.eq("last_name", "Tom")
.eq("age", 44)
);
/*
==> Preparing: UPDATE tbl_employee SET last_name=?, email=?, gender=? WHERE (last_name = ? AND age = ?)
==> Parameters: 苍老师(String), cls@sina.com(String), 0(String), Tom(String), 44(Integer)
<== Updates: 0
*/
}
- 新增
/**
* 通用 插入操作
*/
@Test
public void testCommonInsert() { //初始化Employee对象
Employee employee = new Employee();
employee.setLastName("MP");
employee.setEmail("mp@atguigu.com");
//employee.setGender(1);
//employee.setAge(22);
//employee.setSalary(2"0""0""0""0"."0");
//插入到数据库
// insert方法在插入时, 会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
//Integer result = employeeMapper.insert(employee);
/*
==> Preparing: INSERT INTO tbl_employee ( id, last_name, email ) VALUES ( ?, ?, ? )
==> Parameters: 1107953008443265026(Long), MP(String), mp@atguigu.com(String)
<== Updates: 1
*/
//insertAllColumn方法在插入时, 不管属性是否非空, 属性所对应的字段都会出现到SQL语句中.
Integer result = employeeMapper.insertAllColumn(employee);
/*
==> Preparing: INSERT INTO tbl_employee ( id,last_name,email,gender,age,version ) VALUES ( ?,?,?,?,?,? )
==> Parameters: 1107952717069209602(Long), MP(String), mp@atguigu.com(String), null, null, null
<== Updates: 1
*/
System.out.println("result: " + result ); //获取当前数据在数据库中的主键值 mybatis plus自动会回填id
Long key = employee.getId();
System.out.println("key:" + key );
}
- 查询
/**
* 通用 查询操作
*/
@Test
public void testCommonSelect() {
//1. 通过id查询
// Employee employee = employeeMapper.selectById(7);
// System.out.println(employee); //2. 通过多个列进行查询 id + lastName
// Employee employee = new Employee();
// //employee.setId(7);
// employee.setLastName("小泽老师");
// employee.setGender("0");
//
// Employee result = employeeMapper.selectOne(employee);
// System.out.println("result: " +result ); //3. 通过多个id进行查询 <foreach>
// List<Integer> idList = new ArrayList<>();
// idList.add(4);
// idList.add(5);
// idList.add(6);
// idList.add(7);
// List<Employee> emps = employeeMapper.selectBatchIds(idList);
// System.out.println(emps); //4. 通过Map封装条件查询
// Map<String,Object> columnMap = new HashMap<>();
// columnMap.put("last_name", "Tom");
// columnMap.put("gender", 1);
//
// List<Employee> emps = employeeMapper.selectByMap(columnMap);
// System.out.println(emps); //5. 分页查询
List<Employee> emps = employeeMapper.selectPage(new Page(1, 2), null);
System.out.println(emps);
}
/**
* 条件构造器 查询操作
*/
@Test
public void testEntityWrapperSelect() {
//我们需要分页查询tbl_employee表中,年龄在18~5"0"之间且性别为男且姓名为Tom的所有用户 // List<Employee> emps =employeeMapper.selectPage(new Page<Employee>(1, 2),
// new EntityWrapper<Employee>()
// .between("age", 18, 5"0")
// .eq("gender", 1)
// .eq("last_name", "Tom")
// );
// System.out.println(emps);
/*
==> Preparing: SELECT COUNT(1) FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
==> Parameters: 18(Integer), 50(Integer), 1(Integer), Tom(String)
<== Columns: COUNT(1)
<== Row: 0
==> Preparing: SELECT id AS id,last_name AS lastName,email,gender,age,version FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
==> Parameters: 18(Integer), 50(Integer), 1(Integer), Tom(String)
<== Total: 0
*/
// 查询tbl_employee表中, 性别为女并且名字中带有"老师" 或者 邮箱中带有"a" // List<Employee> emps = employeeMapper.selectList(
// new EntityWrapper<Employee>()
// .eq("gender", "0")
// .like("last_name", "老师")
// //.or() // SQL: (gender = ? AND last_name LIKE ? OR email LIKE ?)
// .orNew() // SQL: (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
// .like("email", "a")
// );
// System.out.println(emps);
/*
==> Preparing: SELECT id AS id,last_name AS lastName,email,gender,age,version FROM tbl_employee WHERE (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
==> Parameters: 0(String), %老师%(String), %a%(String)
<== Columns: id, lastName, email, gender, age, version
<== Row: 1107952717069209602, MP, mp@atguigu.com, null, null, null
<== Row: 1107953008443265026, MP, mp@atguigu.com, null, null, null
<== Total: 2
*/
// 查询性别为女的, 根据age进行排序(asc/desc), 简单分页 // List<Employee> emps = employeeMapper.selectList(
// new EntityWrapper<Employee>()
// .eq("gender", "0")
// .orderBy("age")
// //.orderDesc(Arrays.asList(new String [] {"age"}))
// .last("desc limit 1,3")
// );
// System.out.println(emps); }
/*
==> Preparing: SELECT id AS id,last_name AS lastName,email,gender,age,version FROM tbl_employee WHERE (gender = ?) ORDER BY age desc limit 1,3
==> Parameters: 0(String)
<== Total: 0
*/
MyBatis Plus 2.3 个人笔记-02-基本注解的更多相关文章
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- 《30天自制操作系统》笔记(02)——导入C语言
<30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...
- 《The Linux Command Line》 读书笔记02 关于命令的命令
<The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题
# 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...
- JS自学笔记02
JS自学笔记02 1.复习 js是一门解释性语言,遇到一行代码就执行一行代码 2.查阅mdn web文档 3.提示用户输入并接收,相比之下,alert只有提示的作用: prompt(字符串) 接收: ...
- 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)
机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...
- CS229 笔记02
CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ $ {\bf {\t ...
- OpenCV 学习笔记 02 使用opencv处理图像
1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...
- ASP.NET Identity 2集成到MVC5项目--笔记02
ASP.NET Identity 2集成到MVC5项目--笔记01 ASP.NET Identity 2集成到MVC5项目--笔记02 继上一篇,本篇主要是实现邮件.用户名登陆和登陆前邮件认证. 1. ...
随机推荐
- .Net Core之JWT授权
一.什么是JWT 文章参考:https://www.leo96.com/article/detail/55 JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义 了一种紧凑且自包含 ...
- 在Linux发行版上使用7zip的方法
学习如何在 Ubuntu 和其他 Linux 发行版中安装和使用 7zip 7zip介绍 7Zip(更适当的写法是 7-Zip)是一种在 Windows 用户中广泛流行的归档格式.一个 7Zip 归档 ...
- 接口java.util.Map的四个实现类HashMap Hashtable LinkedHashMap TreeMap
java中HashMap,LinkedHashMap,TreeMap,HashTable的区别 :java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMa ...
- [入门到吐槽系列] 微信小程序 敏感违规图片检测 mediaCheckAsync,客服接口 消息推送 的各种坑分享!
前言: 最近需要做个用户上传图片,服务端校验图片问题的需求.需要使用小程序消息推送,异步接受腾讯的图片验证回调.实在太多坑了. 相信10分钟看完本文的朋友,可以非常顺利避坑. 前期准备: 首先需要一个 ...
- VUE3 之 使用标签实现动画与过渡效果 - 这个系列的教程通俗易懂,适合新手
1. 概述 巴纳姆效应告诉我们: 人们更容易相信笼统的.常见的人格描述,并觉得特别适合自己,认为该描述真实地反映了自己的人格面貌. 这也是所有算命先生的小把戏,算命先生通常把话说的很笼统,很通用,基本 ...
- selenium在爬虫中的使用
一. selenium概述 1.1 定义 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括Phantom ...
- java中的异常(Exception)
基本概念 将程序执行中发生的不正常的情况称为"异常".开发中的语法错误和逻辑错误不是异常 执行过程中的异常事件可分为两大类 错误(Error):Java虚拟机无法解决的严重问题.例 ...
- 面试官:Redis中集合数据类型的内部实现方式是什么?
虽然已经是阳春三月,但骑着共享单车骑了这么远,还有有点冷的.我搓了搓的被冻的麻木的手,对着前台的小姐姐说:"您好,我是来面试的."小姐姐问:"您好,您叫什么名字?&quo ...
- 5. Java方法
5.Java方法 1.何谓方法 Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:方法 ...
- tp5 git 常见命令
git clone git add . # 跟踪所有改动过的文件 git commit -m "commit message" # 提交所有更新过的文件 git checkout ...