Java mybatis-plus详解

 更新时间:2021年09月22日 08:47:28   作者:--流星。  
MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做修改,为简化开发、提高效率而生,本文给大家详细讲解一下MyBatis-Plus,需要的朋友参考下吧

1、简介

MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。

2、适用情况

1、对于只进行单表操作来说,mybatis-plus代码量比mybatis的代码量少很多,极大的提高了开发效率
2、对于多表操作来说,更推荐mybatis,因为mybatis-plus的方法比较难以理解,用起来不太方便,不如自己写sql语句的逻辑那么清晰明了

3、mybatis-plus前期准备(工程将以 H2 作为默认数据库进行演示)

1、使用 Spring Initializer快速初始化一个 Spring Boot 工程

2、导入mybatis-plus依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>spring-latest-version</version>
    <relativePath/>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>Latest Version</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

3、yml文件中添加相关配置

# DataSource Config
spring:
  datasource:
    driver-class-name: org.h2.Driver
    schema: classpath:db/schema-h2.sql
    data: classpath:db/data-h2.sql
    url: jdbc:h2:mem:test
    username: root
    password: test

4、在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹

@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")

5、编写实体类和Mapper类

//entity
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

//Mapper
public interface UserMapper extends BaseMapper<User> {
}

6、service继承IService

public interface UserService extends IService<User> 

7、serviceImpl继承ServiceImpl

public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService

4、mybatis-plus的sql操作(Service层)

1、Save:插入

// 插入一条记录(选择字段,策略插入)
boolean save(T entity);
// 插入(批量)
boolean saveBatch(Collection<T> entityList);
// 插入(批量)
boolean saveBatch(Collection<T> entityList, int batchSize);

在这里插入图片描述

2、SaveOrUpdate:修改插入

// TableId 注解存在更新记录,否插入一条记录
boolean saveOrUpdate(T entity);
// 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

在这里插入图片描述

3、Remove:删除

// 根据 entity 条件,删除记录
boolean remove(Wrapper<T> queryWrapper);
// 根据 ID 删除
boolean removeById(Serializable id);
// 根据 columnMap 条件,删除记录
boolean removeByMap(Map<String, Object> columnMap);
// 删除(根据ID 批量删除)
boolean removeByIds(Collection<? extends Serializable> idList);

4、Update:更新

// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
boolean update(Wrapper<T> updateWrapper);
// 根据 whereWrapper 条件,更新记录
boolean update(T updateEntity, Wrapper<T> whereWrapper);
// 根据 ID 选择修改
boolean updateById(T entity);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList, int batchSize);

在这里插入图片描述

5、Get:单体查询

// 根据 ID 查询
T getById(Serializable id);
// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
T getOne(Wrapper<T> queryWrapper, boolean throwEx);
// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper)

在这里插入图片描述

6、List:多条查询

// 查询所有
List<T> list();
// 查询列表
List<T> list(Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
Collection<T> listByIds(Collection<? extends Serializable> idList);
// 查询(根据 columnMap 条件)
Collection<T> listByMap(Map<String, Object> columnMap);
// 查询所有列表
List<Map<String, Object>> listMaps();
// 查询列表
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);
// 查询全部记录
List<Object> listObjs();
// 查询全部记录
<V> List<V> listObjs(Function<? super Object, V> mapper);
// 根据 Wrapper 条件,查询全部记录
List<Object> listObjs(Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录
<V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

在这里插入图片描述

7、Page:分页查询(需要导入相关的配置或依赖)

// 无条件分页查询
IPage<T> page(IPage<T> page);
// 条件分页查询
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
// 无条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page);
// 条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);

在这里插入图片描述

8、Count:记录数据个数

// 查询总记录数
int count();
// 根据 Wrapper 条件,查询总记录数
int count(Wrapper<T> queryWrapper);

5、详细资料

由于篇幅有限,先写到这里
具体内容请看
1、mybatis-plus官网:https://mp.baomidou.com/
2、MyBatis-Plus 通用IService使用详解

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • SpringBoot2.6.x默认禁用循环依赖后的问题解决

    SpringBoot2.6.x默认禁用循环依赖后的问题解决

    由于SpringBoot从底层逐渐引导开发者书写规范的代码,同时也是个忧伤的消息,循环依赖的应用场景实在是太广泛了,所以SpringBoot 2.6.x不推荐使用循环依赖,本文给大家说下SpringBoot2.6.x默认禁用循环依赖后的应对策略,感兴趣的朋友一起看看吧
    2022-02-02
  • kaptcha验证码使用方法详解

    kaptcha验证码使用方法详解

    这篇文章主要为大家详细介绍了kaptcha验证码的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Java读取properties配置文件时,出现中文乱码的解决方法

    Java读取properties配置文件时,出现中文乱码的解决方法

    下面小编就为大家带来一篇Java读取properties配置文件时,出现中文乱码的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • java生成验证码步骤归纳总结

    java生成验证码步骤归纳总结

    这篇文章主要为大家详细介绍了java生成验证码的步骤总结,需要的朋友可以参考下
    2017-04-04
  • SpringBoot中配置双数据源的实现示例

    SpringBoot中配置双数据源的实现示例

    在许多应用程序中,可能会遇到需要连接多个数据库的情况,本文主要介绍了SpringBoot中配置双数据源的实现示例,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • SpringBoot如何根据用户系统时区动态展示时间

    SpringBoot如何根据用户系统时区动态展示时间

    这篇文章主要介绍了SpringBoot如何根据用户系统时区动态展示时间,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • springboot整合xxl-job的示例代码

    springboot整合xxl-job的示例代码

    这篇文章主要介绍了springboot整合xxl-job的示例代码,主要分为三大模块,分别是调度中心、执行器和配置定时任务的过程,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Java 深入浅出解析面向对象之抽象类和接口

    Java 深入浅出解析面向对象之抽象类和接口

    本章具体介绍了抽象类和接口,整篇文章用目前流行的手机来举例,图解穿插代码案例。 JAVA成仙路从基础开始讲,后续会讲到JAVA高级,中间会穿插面试题和项目实战,希望能给大家带来帮助
    2022-03-03
  • Java 文件上传的实例详解

    Java 文件上传的实例详解

    这篇文章主要介绍了Java 文件上传的实例详解的相关资料,希望通过本文大家能掌握这部分内容,使用几种文件上传的方法,需要的朋友可以参考下
    2017-09-09
  • SpringMVC的详细架构你了解嘛

    SpringMVC的详细架构你了解嘛

    这篇文章主要为大家介绍了SpringMVC的详细架构,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论