• 实体类注解
/*
* 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-基本注解的更多相关文章

  1. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  2. 《30天自制操作系统》笔记(02)——导入C语言

    <30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...

  3. 《The Linux Command Line》 读书笔记02 关于命令的命令

    <The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...

  4. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

  5. JS自学笔记02

    JS自学笔记02 1.复习 js是一门解释性语言,遇到一行代码就执行一行代码 2.查阅mdn web文档 3.提示用户输入并接收,相比之下,alert只有提示的作用: prompt(字符串) 接收: ...

  6. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  7. CS229 笔记02

    CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ ​ $ {\bf {\t ...

  8. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  9. ASP.NET Identity 2集成到MVC5项目--笔记02

    ASP.NET Identity 2集成到MVC5项目--笔记01 ASP.NET Identity 2集成到MVC5项目--笔记02 继上一篇,本篇主要是实现邮件.用户名登陆和登陆前邮件认证. 1. ...

随机推荐

  1. Linux性能优化实战CPU篇之软中断(三)

    一.软中断 1,中断的定义 a>定义 举例:你点了一份外卖,在无法获知外卖进度的情况下,配送员送外卖是不等人的,到了发现没人取会直接走,所以你只能苦苦等着,时不时去门口看送到没有,无法干别的事情 ...

  2. hadoop 无法访问50070

    windows无法访问hadoop web端口 windows hosts文件:C:\Windows\System32\drivers\etc centos防火墙没有关,关闭参考 hadoop cor ...

  3. idea导入hadoop jar包

    hadoop jar包 在hadoop安装目录下,找到share\hadoop目录,搜索jar,全选,然后在安装目录新建_jar文件夹,将所有的jar包拷进去 idea添加jar包 在Project ...

  4. 由浅入深--MyBatis系列

    从今天开始将要开始由浅入深--MyBatis系列博客的编写; 主要目录如下: MyBatis基础知识篇 1.由浅入深---ORM简介 2.由浅入深---MyBatis的整体架构 3.由浅入深---第一 ...

  5. 2020CCPC长春F. Strange Memory

    题目大意 一棵以 \(1\) 为根的 \(n(2\leq n\leq 10^5)\) 的树,每个节点 \(i\) 有权值 \(a_{i}(1\leq a_{i}\leq 10^6)\) ,求 \(\s ...

  6. 洛谷训练P1008(循环+暴力)

    1 #include<stdio.h> 2 #include<string.h> 3 int a[10]; 4 int main(){ 5 for (int x=123;x&l ...

  7. SVN库文件上传操作步骤

    SVN库文件上传步骤: 1,sv st  或 svn status  查看本地库与远程库的差别(M代表文件有修改,?代表目录中有文件本地新增加) 2,根据1步骤中的查看结果:svn diff  差异文 ...

  8. zookeeper的JAVA API使用

    1.创建连接 2.创建节点 3.监听信息 Watcher.class 4.获取节点 Stat stat = new Stat(); zk.getData(Path,true,stat); 5.修改节点 ...

  9. Vue的mvvm模式

    传统的MVC模式: Model:模型-->负责数据存储 View:视图-->负责页面展示 Control:控制器-->事件交互(根据视图与用户交互后改变数据) Vue的MVVM模式: ...

  10. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...