MyBatis-Plus(三、增删改查)

简介: 通过继承BaseMapper就可以获取到各种各样的单表CRUD操作,史上最全的mybatis-plus通用增删改查操作,面向零基础。

前言

  MyBatis非常方便,代码简洁,开发速度极高,通过继承BaseMapper就可以获取到各种各样的单表操作,无需再写其他的接口方法,非常的简便快捷。


我们可以看到BaseMapper 为我们提供了很多方法供我们CRUD使用。

image-20220816074911103.png

Mapper CRUD 接口

说明:

  • 通用 CRUD 封装[BaseMapper 接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
  • 泛型 T 为任意实体对象
  • 参数 Serializable为任意类型主键 Mybatis-Plus不推荐使用复合主键约定每一张表都有自己的唯一 id 主键
  • 对象 Wrapper为 条件构造器

1、查询

1、查询所有,不加条件去查询

//1、查询所有,不加条件去查询userMapper.selectList(null).forEach(System.out::println);       //forEach遍历打印

2、查询所有,加条件去查询

//2、查询所有,加条件去查询//2.1、new QueryWrapperQueryWrapperqueryWrapper1=newQueryWrapper();
//2.2、设置条件queryWrapper1.eq("age", 20);
userMapper.selectList(queryWrapper1).forEach(System.out::println);

• lt           #小于

• gt       #大于

• ne       #不等于

• eq       #等于

• le           #小于等于

• ge       #大于等于

• 等等

3、多条件去查询

new一个hashmap,把条件放到map中,再把map放到条件中。

QueryWrapperqueryWrapper2=newQueryWrapper();
//3.1、设置多条件Map<String,Object>map=newHashMap<>();
map.put("age",20);
map.put("name","张三");
//3.2、map放进queryWrapperqueryWrapper2.allEq(map);

4、分页查询

//4、分页查询//1、配置类paginationInterceptor//2、设置分页参数Page<User>page=newPage<>(1,3);      //当前页,每页显示条数2Page<User>userPage=userMapper.selectPage(page, null);//分页参数,查询条件System.out.println(userPage.getCurrent());      //当前页System.out.println(userPage.getSize());     //每页显示条数userPage.getRecords().forEach(System.out::println);     //查询结果

5、等等

@Test

   voidselect() {

       //1、查询所有,不加条件去查询

       userMapper.selectList(null).forEach(System.out::println);       //forEach遍历打印

       //2、查询所有,加条件去查询

           //2.1、new QueryWrapper

       QueryWrapperqueryWrapper1=newQueryWrapper();

           //2.2、设置条件

       queryWrapper1.eq("age", 20);

       /**

        * lt           #小于

        * gt       #大于

        * ne       #不等于

        * eq       #等于

        * le           #小于等于

        * ge       #大于等于

        * between      #between

        * like like    模糊查询        #likeLeft 左模糊  likeRight 右模糊

        * isNull

        * isNotNull

        * in                         #inSql in sql语句

        * notIn

        * orderBy                  #排序 ASC DESC 升序降序

        * orderByDesc

        */

       userMapper.selectList(queryWrapper1).forEach(System.out::println);

       //3、多条件去查询

       QueryWrapperqueryWrapper2=newQueryWrapper();

           //3.1、设置多条件

           Map<String,Object>map=newHashMap<>();

           map.put("age",20);

           map.put("name","张三");

           //3.2、map放进queryWrapper

       queryWrapper2.allEq(map);

       //byId

       Useruser=userMapper.selectById(1);

       System.out.println(user);

       //byBatchIds

       userMapper.selectBatchIds(Arrays.asList(1,2,3)).forEach(System.out::println);       //Arrays.asList(1,2,3)是一个数组,把数组转换成list集合

       //通过map条件查询

       //map只能是一个条件,不能是多个条件

       Map<String,Object>map1=newHashMap<>();

       map1.put("age",20);

       map1.put("name","张三");

       userMapper.selectByMap(map).forEach(System.out::println);

       //4、分组查询

       QueryWrapperqueryWrapper3=newQueryWrapper();

       queryWrapper3.gt("age",20);

       System.out.println(userMapper.selectCount(queryWrapper3));

       //将查询结果放入map中

       userMapper.selectMaps(queryWrapper1).forEach(System.out::println);

       //分页查询

       //1、配置类paginationInterceptor

       //2、设置分页参数

       Page<User>page=newPage<>(1,3);      //当前页,每页显示条数2

       Page<User>userPage=userMapper.selectPage(page, null);//分页参数,查询条件

       System.out.println(userPage.getCurrent());      //当前页

       System.out.println(userPage.getSize());     //每页显示条数

       userPage.getRecords().forEach(System.out::println);     //查询结果

       //封装到map中

       Page<Map<String,Object>>mapPage=newPage<>(1,3);     //分页参数,查询条件

       userMapper.selectMapsPage(mapPage, null).getRecords().forEach(System.out::println);     //查询结果

       //查询所有,只输出id

       userMapper.selectObjs(null).forEach(System.out::println);     //查询结果

       //查询一个

       System.out.println(userMapper.selectOne(null));     //查询结果

   }

2、添加

 

/*** Insert*/@TestvoidinsertTest(){
Useruser=newUser();
user.setName("张三");
user.setAge(20);
userMapper.insert(user);
System.out.println(user);
    }

3、删除

/*** Delete*/@TestvoiddeleteTest(){
//通过id删除userMapper.deleteById(1);
//通过多条件id删除userMapper.deleteBatchIds(Arrays.asList(1,2,3));
//通过条件删除QueryWrapperqueryWrapper=newQueryWrapper ();
queryWrapper.eq("name","张三");       //与查询相同userMapper.delete(queryWrapper);
//通过条件删除---MapMap<String,Object>map=newHashMap<>();
map.put("name","张三");
userMapper.deleteByMap(map);
    }

4、修改

/*** Update*/@TestvoidupdateTest(){
//通过id更新Useruser=userMapper.selectById(1);       //查询数据user.setName("李四");     //修改数据user.setAge(30);
userMapper.updateById(user);
//通过QueryWrapper更新Useruser1=userMapper.selectById(1);      //查询数据QueryWrapperqueryWrapper=newQueryWrapper();         //构建条件queryWrapper.eq("name","张三");
queryWrapper.eq("age",20);
userMapper.update(user1,queryWrapper);     //更新数据    }

5、自定义 SQL(多表关联查询)

当我们需要多表查询时,简单的crud满足不了我们的需求时,我们就需要通过自定义sql,来实现我们的所需的功能。

packagecom.southwind.mybatisplus.mapper;
importcom.baomidou.mybatisplus.core.mapper.BaseMapper;
importcom.southwind.mybatisplus.entity.ProductVO;
importcom.southwind.mybatisplus.entity.User;
importorg.apache.ibatis.annotations.Select;
importjava.util.List;
publicinterfaceUserMapperextendsBaseMapper<User> {
@Select("select p.*,u.name userName from product p,user u where p.user_id = u.id and u.id = #{id}")
List<ProductVO>productList(Integerid);
}

总结

  Mybatis 为我们提供了基本的增删改查的接口,特别是 Mybatis-Plus 提供的 Wrappers 更是可以组合出更复杂的查询语句以满足我们需求。但有些复杂的操作,比如联表查询等,这些就需要使用自定义 SQL 语句进行操作的。

相关文章
|
7月前
|
存储 Java 数据库连接
MyBatis-Plus 基础操作指南:实现高效的增删改查
MyBatis-Plus 基础操作指南:实现高效的增删改查
603 0
|
7月前
|
SQL Java 数据库连接
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
141 0
|
7月前
|
SQL Java 数据库连接
用springboot mybatis写一个增删改查
用springboot mybatis写一个增删改查
71 0
|
7月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
|
6月前
|
SQL 存储 Java
基于MyBatis的增删改查操作
基于MyBatis的增删改查操作
47 1
|
3月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
6月前
|
SQL 存储 Java
基于MyBatis的增删改查的基础操作
基于MyBatis的增删改查的基础操作
41 0
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
70 1
|
5月前
|
Java 数据库连接 数据库
mybatis plus 中增删改查及Wrapper的使用
mybatis plus 中增删改查及Wrapper的使用
261 3
|
4月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
400 0