首先我们的项目建立之后我们要建立一个实体类来对应我们的数据裤中的信息

employee

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dailuobo.devops.common.domain.entity.BaseEntity;
import lombok.Data; /**
* TableName
* 是让我们的类和数据库的表建立关系
* value 是表明 默认不写value
*/
@Data
@TableName("tbl_employee")
public class Employee { /**
* TableId
* value 指定表中额主键列名 如果实体属性和列名一致 可以省略不写
* type指定主键策略 mybatisplus文档上有
*/
//主键注解 因为我们的表设置的是自增的但是要让mybatisplus同步否则报错
@TableId(value = "id",type = IdType.AUTO) //设置自增 因为
private Integer id; @TableField(value = "last_name") //标注当前数据库的列名
private String lastName;
private String email;
private Integer gender;
private Integer age; //如果这个类中有其他的非数据的字段这个时候可以使用
@TableField(exist = false)
private Double salary; //再插入的时候就会忽略这个字段不去数据库中校验
}

然后为这个类再建立能操作数据的方法类Mapper

EmployeeMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dailuobo.devops.mp.common.domain.entity.Employee; /**
* Mapper接口
* 基于mybatis:在Mapper接口中编写CRUD方法 提供Mapper接口对应的SQL映射文件以及方法对应的SQL语句
*
*
* 基于Mybatis Plus 让XXXMapper继承BaseMapper接口即可
* BaseMapper<T> : 泛型指定的就是当前Mapper解耦所操作的实体类对象
*/ public interface EmployeeMapper extends BaseMapper<Employee> {
}

然后我们可以通过这个EmployeeMapper类进行数据的增删改的操作也可以  通过services类继承之后再进行间接操作

我现在测试方法中进行操作:

    @Test
public void testCommonInsert(){ //初始化employee对象
Employee employee = new Employee(); employee.setLastName("test");
employee.setEmail("mp@caicai.com");
employee.setGender(1);
// employee.setAge(20); //插入数据库 insert会对实体类的属性进行非空判断 只有非空才会出现在sql语句中
Integer result = employeeMapper.insert(employee); //通过点进去的源码可以看到是有一个返回值的 这个返回值是int就是我们队数据库的影响的条数 // employeeMapper.insertAllColumn 插入的时候如果值没有信息设置为null字符插入 而insert现在集合了这个默认的功能
System.out.println("result"+result); //我们可以通过对象.getId()来获取对象表中数据的主键值
employee.getId();
}

插入:insert

这个就相当于我们的python的orm操作信息,都是通过特定的语句可以直接进行数据的操作

mapper对象.insert(对象);

insert插入的是一个对象 然后返回的是一个插入条数 数字

        //初始化employee对象
Employee employee = new Employee(); employee.setLastName("test");
employee.setEmail("mp@caicai.com");
employee.setGender(1);
employee.setAge(20); //插入数据库 insert会对实体类的属性进行非空判断 只有非空才会出现在sql语句中
Integer result = employeeMapper.insert(employee); //通过点进去的源码可以看到是有一个返回值的 这个返回值是int就是我们队数据库的影响的条数 // employeeMapper.insertAllColumn 插入的时候如果值没有信息设置为null字符插入 而insert现在集合了这个默认的功能
System.out.println("result"+result); // result 1

插入的时候只能放在最后插入 哪怕指定已经存在的id插入也不会修改,会自动在后面插入

    @Test
public void testUpdate(){ Employee employee = new Employee();
employee.setLastName("insert_one");
employee.setId(7); // 只可以当做插入不可以当做修改 如果指定已经有的id插入 也会放在后面依次插入 Integer result = employeeMapper.insert(employee);
if (result >= 1){
System.out.println("插入成功"+result);
}else{
System.out.println("插入失败");
} }

getId() :获取对象表中的主键值

        //我们可以通过对象.getId()来获取对象表中数据的主键值
employee.getId();获取employee 对象的主键值

updateById(); 修改信息  指定主键id去修改 不然就会修改失败 报错,哪怕把一整个对象更新进去也要指定这个对象的主键id

Mapper对象.updateById(更新对象);

更新的时候就要知道和python一样我们先设置值 然后再更新到数据库中
   @Test
public void testUpdate(){
Employee employee = new Employee(); employee.setId(5); // 指定修改的主键id信息
employee.setLastName("222");
// employee.setEmail("eqeq"); //updatebyid如果全部更新 就直接把对象放进去 如果针对选择更新 那就获取这个更新的主键id然后进行更新 Integer result = employeeMapper.updateById(employee);
System.out.println("result:"+result); //必须要 }

根据条件修改:update()  

update(对象,条件构造器)
                    QueryWrapper<Server> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",name); //条件
serverMapper.update(server,queryWrapper);

修改:

        Employee employee = new Employee();
employee.setId(7);
employee.setEmail("111111");
// employee.setLastName("update_two");
// Integer result = employeeMapper.updateById(employee); UpdateWrapper updateWrapper = new UpdateWrapper();
updateWrapper.eq("id", 7);
// Integer result = employeeMapper.update (employee,new UpdateWrapper().set("name", "buiob")); employeeMapper.update(employee, updateWrapper);

查询操作:

    selectById();   通过主键查询

  selectBatchIds() 通过主键list查询 返回的也是list集合   selectList();根据判断条件查询   selectOne() 构造查询条件 返回的是一个对象

selectById();

Mapper对象.selectById(要查询的主键id);
  @Test
public void testcommonSelect(){ //获取主键是3的数据对象
Employee employee = employeeMapper.selectById(3); //根据主键来查找到这个主键对应的数据 获取的是一个对象
System.out.println("employee对象:"+employee);
}

selectOne();  和selectMap差不多都是按照条件然后查询 但是返回值不同

构构造查询条件 () 内传递的是对象

    @Test
public void selectOne(){ // Employee employee = new Employee();
// employee.setEmail("tree.com");
Employee employee1 = employeeMapper.selectOne(new QueryWrapper<Employee>().eq("email","three.com"));
System.out.println("selevtOne:"+ employee1); //selevtOne:Employee(id=2, lastName=three, email=three.com, gender=1, age=30, salary=null) }

查询多个信息   selectBatchIds()  返回的是list集合

 /**
* 通过多个id获取
*/
@Test
public void getlist(){ //返回的是查询的对象信息
List<Integer> idlist = new ArrayList<>();
idlist.add(1);
idlist.add(3); List<Employee> employees = employeeMapper.selectBatchIds(idlist);
System.out.println("employees:"+employees); //返回的就是查询到的3条信息
}

构造条件查询:selectByMap()返回的list集合 里面必须是map对象

/** selectByMap    条件查询
* 通过Map封装条件查询
*/
@Test
public void getMap(){
//通过Map封装信息
Map<String,Object> columnMap = new HashMap<>();
columnMap.put("last_name","Tom"); //这里面写列名而不是对应的属性名
columnMap.put("gender",1); //查询last_name是Tom gender是1的数据库信息
List<Employee> employees = employeeMapper.selectByMap(columnMap);
System.out.println(employees); //就获取的查询的对象信息
// 结果封装成Map:Map:[Employee(id=2, lastName=three, email=three.com, gender=1, age=30, salary=null)]
  } 
    @Test
public void selectMap(){
Map<String,Object> stringMap = new HashMap<>();
//设置条件查询
stringMap.put("email","three.com");//设置查询条件
List<Employee> employeeList = employeeMapper.selectByMap(stringMap); //查询email == tree.com
System.out.println("Map:"+employeeList); }

selectList(); 按照字段查询

    @Test
public void selecList(){
// select 要查询的字段 只返回你设置的字段其他的都是null
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().select("email"));
System.out.println(employeeList); 返回的是每条记录的设置查询的字段 其余的不显示
}

相当于执行SELECT email FROM tbl_employee  这条sql语句

    @Test
public void selectList(){
Employee employee = new Employee();
// where 条件查询和and添加和orderby使用
// SELECT age FROM tbl_employee WHERE email = ? AND age = ? ORDER BY id ASC
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().select("age").eq("email",employee.getEmail()) .eq("age",employee.getAge()).orderBy(true,true,"id")); System.out.println("employeeList:"+employeeList); }

相当于SQL语句SELECT age FROM tbl_employee WHERE email = ? AND age = ? ORDER BY id ASC

删除操作:delete

deleteById()  根据主键删除

deleteBatchIds() 根据主键列表删除
deleteMap() 根据条件删除 根据的是map中的条件

deleteById(): 根据主键删除

    @Test
public void deleteBy(){
Integer result = employeeMapper.deleteById(4); //返回的是删除的条数 System.out.println("delete:"+ result);
}

deleteBatchIds() :根据主键列表删除

    @Test
public void deleteByIds(){
List<Integer> idlist = new ArrayList<>();
idlist.add(3);
idlist.add(7);
idlist.add(12);
idlist.add(11);
Integer integer = employeeMapper.deleteBatchIds(idlist); //根据list集合进行删除
System.out.println("deletelist:"+integer);
}

deleteByMap() : 根据条件删除

    @Test
public void deleteMap(){
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("id",5); //根据id删除
Integer integer = employeeMapper.deleteByMap(columnMap);
System.out.println("deletemap"+integer);
}
    @Test
public void deleteMap(){
Map<String,Object> columnMap = new HashMap<>();
columnMap.put("email",null); //删除email 和last_name都是null的信息
columnMap.put("last_name",null);
Integer integer = employeeMapper.deleteByMap(columnMap);
System.out.print("map:"+integer);
}

mybatis plus CRUD的更多相关文章

  1. MyBatis:CRUD功能

    在前面已经自动生成了mapper和pojo,接下来我们实现mybatis的CRUD功能,先新建service.controller层的方法. 这里的sid是一个开源的id生成类,写完后,我们还需要在启 ...

  2. Mybatis的CRUD案例

    一.Mybatis增删改查案例 上一节<Mybatis入门和简单Demo>讲了如何Mybatis的由来,工作流程和一个简单的插入案例,本节主要继上一讲完整的展示Mybatis的CRUD操作 ...

  3. 【MyBatis】MyBatis实现CRUD操作

    1.实现基本CRUD功能 使用MyBatis对数据完整的操作,也就是CRUD功能的实现.根据之前的内容,要想实现CRUD,只需要进行映射文件的配置. 范例:修改EmpMapper.xml文件,实现CR ...

  4. SpringBoot 整合 Mybatis 进行CRUD测试开发

    今天来和大家分享下 Spring Boot 整合 MyBatis 的 CRUD 测试方法开发.因为 MyBaits 有两种开发形式,一种基于注解,一种基于 xml . SpringBoot配置文件也有 ...

  5. 基于mybatis的CRUD

    u  基于Mybatis的CRUD u  掌握MyBatis的结果类型-resultMap和resultType u  掌握MyBatis的参数类型 u  掌握#和$两种语法 1      基于myb ...

  6. 05 Mybatis的CRUD操作和Mybatis连接池

    1.CRUD的含义 CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写.主要被用在描述软件系统中 ...

  7. 03 Mybatis:05.使用Mybatis完成CRUD

    mybatis框架:共四天 明确:我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式.不管使用XML还是注解配置. 第二天:mybatis基本使用 mybatis的单表crud操作 ...

  8. mybatis(CRUD)

    3.mybatis(CRUD) 有了mybatis,我们要对数据库进行增删改查只需要操作接口和mapper.xml文件,然后进行测试就可以了. 实例代码如下: 接口 public interface ...

  9. MyBatis之CRUD

    1 mybatis框架介绍 1.1回顾jdbc操作数据库的过程 1.2 mybatis开发步骤 A.提供一个SqlMapperConfig.xml(src目录下),该文件主要配置数据库连接,事务,二级 ...

  10. MyBatis Tutorial – CRUD Operations and Mapping Relationships – Part 1---- reference

    http://www.javacodegeeks.com/2012/11/mybatis-tutorial-crud-operations-and-mapping-relationships-part ...

随机推荐

  1. leetcode-解题记录 557. 反转字符串中的单词 III

    题目: 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode contest" 输出 ...

  2. Flink容错机制(checkpoint)

    checkpoint是Flink容错的核心机制.它可以定期地将各个Operator处理的数据进行快照存储( Snapshot ).如果Flink程序出现宕机,可以重新从这些快照中恢复数据. 1. ch ...

  3. md5加密 和拉钩网的登录

    #使用requests模块 #1.登录lagou #2.登录人人,保存个人首页 import requests from urllib import parse #hashlib是MD5加密的一个py ...

  4. Django 上下文管理器的应用

    使用场景:模板继承可以减少页面内容的重复定义,实现页面内容的重用.个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用.但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的 ...

  5. linux中的常用信号

    linux中的常用信号,见如下列表: 信号名 值 标注 解释 ------------------------------------------------------------------ HU ...

  6. 这么简单的 Redis 面试题都不懂,怎么拿offer?

    来源:mp.weixin.qq.com/s/daBkliC8dAT_zYyoLiS7WA 随着系统访问量的提高,复杂度的提升,响应性能成为一个重点的关注点.而缓存的使用成为一个重点.redis 作为缓 ...

  7. SpringCloud 使用Feign访问服务

    Feign简介: 声明式的Rest  WEB 服务的客户端, https://github.com/OpenFeign/feign.Spring Cloud 提供了Spring-cloud-start ...

  8. FMDB使用的一点心得:数据库创建、制表、查询等以及image转换成二进制nsdata保存到数据库中

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012951123/article/details/36871955 <span style= ...

  9. Yii 1.1 cookie删不掉

    我的cookie是这样设置的: $cookie = new CHttpCookie('username','Jack'); $cookie->expire = time()+60*60*24*3 ...

  10. vue中关于checkbox数据绑定v-model

    vue.js为开发者提供了很多便利的指令,其中v-model用于表单的数据绑定很常见, 下面是最常见的例子: <div id='myApp'>     <input type=&qu ...