10-Java框架-SpringBoot整合MyBatis-Plus

本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,从基础环境准备到条件构造器Wrapper的使用,包括主键策略、逻辑删除、自动填充和分页功能的实现。
摘要由CSDN通过智能技术生成

一、MyBatis-Plus介绍

官网 https://baomidou.com/

在这里插入图片描述

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变(无侵入式),为简化开发、提高效率而生。

MyBatis-Plus为简化开发而生。

二、MyBatis-Plus入门案例

2.1 基础环境准备

User表

-- 创建表
DROP TABLE IF EXISTS user;
CREATE TABLE user(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

-- 插入数据
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

2.2 SpringBoot整合MyBatis-Plus

2.2.1 导入依赖和配置yml

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.10</version>
    <relativePath/>
</parent>
...
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- springboot整合mybatis-plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.2</version>
    </dependency>
    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!--springboot测试-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

application.yml

#配置数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

#日志
logging:
  level:
    cn.msk1024: trace

2.2.2 准备接口和实体类

User实体类

package cn.msk1024.domain;
import ...
@Data
public class User {
   
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

UserMapper接口

package cn.msk1024.mapper;
import ...
/**
 * 我们自己的持久层接口继承BaseMapper接口,泛型指定为实体类User
 * BaseMapper接口由mybatis-plus提供,内置了很多CRUD操作。
 */
public interface UserMapper extends BaseMapper<User> {
   

}

2.2.3 启动类

@SpringBootApplication
@MapperScan("cn.msk1024.mapper") //扫描持久层接口
public class Application {
   
    public static void main(String[] args) {
   
        SpringApplication.run(Application.class, args);
    }
}

2.2.4 测试基于mapper的CRUD接口

@SpringBootTest
public class MybatisPlusTest {
   

    @Autowired
    private UserMapper userMapper;
	
	//基于id查询
    @Test 
    public void testSelectById() {
   
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }
   	//查询所有
    @Test
    public void testSelectAll() {
   
        //查询所有,没有查询条件所以传入null
        List<User> userList = userMapper.selectList(null);
        userList.forEach(System.out::println);

        //还有很多select方法,都需要Wrapper的支持,这里先不进行测试
        /*
        // 根据 entity 条件,查询一条记录
        T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
        // 查询(根据ID 批量查询)
        List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
        // 根据 entity 条件,查询全部记录
        List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
        // 查询(根据 columnMap 条件)
        List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
        // 根据 Wrapper 条件,查询全部记录
        List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
        // 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
        List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

        // 根据 entity 条件,查询全部记录(并翻页)
        IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
        // 根据 Wrapper 条件,查询全部记录(并翻页)
        IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
        // 根据 Wrapper 条件,查询总记录数
        Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
         */
    }

    /**
     * 插入一条记录
     * int insert(T entity);
     */
    @Test
    public void testInsert() {
   
        User u = new User();
        u.setId(6L);
        u.setName("张三");
        u.setAge(30)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值