Java mybatis-plus详解

目录

  • 1、简介
  • 2、适用情况
  • 3、mybatis-plus前期准备(工程将以 H2 作为默认数据库进行演示)
    • 1、使用 Spring Initializer快速初始化一个 Spring Boot 工程
    • 2、导入mybatis-plus依赖
    • 3、yml文件中添加相关配置
    • 4、在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
    • 5、编写实体类和Mapper类
    • 6、service继承IService
    • 7、serviceImpl继承ServiceImpl
  • 4、mybatis-plus的sql操作(Service层)
    • 1、Save:插入
    • 2、SaveOrUpdate:修改插入
    • 3、Remove:删除
    • 4、Update:更新
    • 5、Get:单体查询
    • 6、List:多条查询
    • 7、Page:分页查询(需要导入相关的配置或依赖)
    • 8、Count:记录数据个数
  • 5、详细资料
  • 总结

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依赖

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<parent>

    <groupId>org.springframework.bootgroupId>

    <artifactId>spring-boot-starter-parentartifactId>

    <version>spring-latest-versionversion>

    <relativePath/>

parent>

<dependencies>

    <dependency>

        <groupId>org.springframework.bootgroupId>

        <artifactId>spring-boot-starterartifactId>

    dependency>

    <dependency>

        <groupId>org.springframework.bootgroupId>

        <artifactId>spring-boot-starter-testartifactId>

        <scope>testscope>

    dependency>

    <dependency>

        <groupId>com.baomidougroupId>

        <artifactId>mybatis-plus-boot-starterartifactId>

        <version>Latest Versionversion>

    dependency>

    <dependency>

        <groupId>com.h2databasegroupId>

        <artifactId>h2artifactId>

        <scope>runtimescope>

    dependency>

dependencies>

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

1

2

3

4

5

6

7

8

9

# 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 文件夹

1

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

5、编写实体类和Mapper类

1

2

3

4

5

6

7

8

9

10

11

12

//entity

@Data

public class User {

    private Long id;

    private String name;

    private Integer age;

    private String email;

}

//Mapper

public interface UserMapper extends BaseMapper {

}

6、service继承IService

1

public interface UserService extends IService

7、serviceImpl继承ServiceImpl

1

public class UserServiceImpl extends ServiceImpl implements UserService

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

1、Save:插入

1

2

3

4

5

6

// 插入一条记录(选择字段,策略插入)

boolean save(T entity);

// 插入(批量)

boolean saveBatch(Collection entityList);

// 插入(批量)

boolean saveBatch(Collection entityList, int batchSize);

Java mybatis-plus详解_第1张图片

2、SaveOrUpdate:修改插入

1

2

3

4

5

6

7

8

// TableId 注解存在更新记录,否插入一条记录

boolean saveOrUpdate(T entity);

// 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法

boolean saveOrUpdate(T entity, Wrapper updateWrapper);

// 批量修改插入

boolean saveOrUpdateBatch(Collection entityList);

// 批量修改插入

boolean saveOrUpdateBatch(Collection entityList, int batchSize);

Java mybatis-plus详解_第2张图片

3、Remove:删除

1

2

3

4

5

6

7

8

// 根据 entity 条件,删除记录

boolean remove(Wrapper queryWrapper);

// 根据 ID 删除

boolean removeById(Serializable id);

// 根据 columnMap 条件,删除记录

boolean removeByMap(Map columnMap);

// 删除(根据ID 批量删除)

boolean removeByIds(Collectionextends Serializable> idList);

4、Update:更新

1

2

3

4

5

6

7

8

9

10

// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset

boolean update(Wrapper updateWrapper);

// 根据 whereWrapper 条件,更新记录

boolean update(T updateEntity, Wrapper whereWrapper);

// 根据 ID 选择修改

boolean updateById(T entity);

// 根据ID 批量更新

boolean updateBatchById(Collection entityList);

// 根据ID 批量更新

boolean updateBatchById(Collection entityList, int batchSize);

Java mybatis-plus详解_第3张图片

5、Get:单体查询

1

2

3

4

5

6

7

8

9

10

// 根据 ID 查询

T getById(Serializable id);

// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")

T getOne(Wrapper queryWrapper);

// 根据 Wrapper,查询一条记录

T getOne(Wrapper queryWrapper, boolean throwEx);

// 根据 Wrapper,查询一条记录

Map getMap(Wrapper queryWrapper);

// 根据 Wrapper,查询一条记录

V getObj(Wrapper queryWrapper, Functionsuper Object, V> mapper)

Java mybatis-plus详解_第4张图片

6、List:多条查询

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// 查询所有

List list();

// 查询列表

List list(Wrapper queryWrapper);

// 查询(根据ID 批量查询)

Collection listByIds(Collectionextends Serializable> idList);

// 查询(根据 columnMap 条件)

Collection listByMap(Map columnMap);

// 查询所有列表

List> listMaps();

// 查询列表

List> listMaps(Wrapper queryWrapper);

// 查询全部记录

List listObjs();

// 查询全部记录

List listObjs(Functionsuper Object, V> mapper);

// 根据 Wrapper 条件,查询全部记录

List listObjs(Wrapper queryWrapper);

// 根据 Wrapper 条件,查询全部记录

List listObjs(Wrapper queryWrapper, Functionsuper Object, V> mapper);

Java mybatis-plus详解_第5张图片

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

1

2

3

4

5

6

7

8

// 无条件分页查询

IPage page(IPage page);

// 条件分页查询

IPage page(IPage page, Wrapper queryWrapper);

// 无条件分页查询

IPage> pageMaps(IPage page);

// 条件分页查询

IPage> pageMaps(IPage page, Wrapper queryWrapper);

Java mybatis-plus详解_第6张图片

8、Count:记录数据个数

1

2

3

4

// 查询总记录数

int count();

// 根据 Wrapper 条件,查询总记录数

int count(Wrapper queryWrapper);

5、详细资料

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

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注!

你可能感兴趣的:(java)