欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis-Plus_快速入门01

程序员文章站 2022-07-12 15:47:23
...


现有一张 User 表,其表结构如下:

id name age email
1 Jone 18 [email protected]
2 Jack 20 [email protected]
3 Sandy 28 [email protected]
4 Jone 21 [email protected]
5 Billie 24 [email protected]

1、数据库 Schema 脚本如下:

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 '邮箱',
	create_time DATETIME DEFAULT NULL COMMENT '创建时间',
	PRIMARY KEY (id)
);

2、数据库 Data 脚本:

DELETE FROM user;

INSERT INTO user (id, name, age, email, create_time) VALUES
(1, 'Jone', 18, '[email protected]','2019-01-11 14:20:20'),
(2, 'Jack', 20, '[email protected]','2019-02-05 11:12:22'),
(3, 'Tom', 28, '[email protected]','2019-02-14 08:31:16'),
(4, 'Sandy', 21, '[email protected]','2019-01-14 09:15:15'),
(5, 'Billie', 24, '[email protected]','2019-01-14 09:48:16');

Question:
如果从零开始用 MyBatis-Plus 来实现该表的增删改查我们需要做什么呢?

3、初始化工程

创建一个空的 Spring Boot 工程(工程将以 H2或者mysql 作为默认数据库进行演示)

TIP
可以使用 Spring Initializer 快速初始化一个 Spring Boot 工程

4、添加依赖

引入 Spring Boot Starter 父工程:

<!--SpringBoot Starter 父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、lombok、h2 或者mysql驱动依赖:

 <dependencies>
        <!--SpringBoot 启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--SpringBoot test 启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--lombok 简化java代码-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--Mybatis-Plus 启动器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!--Mysql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
        <!--H2数据库驱动-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

5、配置数据库信息

在 application.yml 配置文件中添加 H2 数据库的相关配置:

#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

或者mysql数据库信息

#数据库库配置信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mp?useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: root

6、在 Spring Boot 启动类中添加 注解

@MapperScan 注解,扫描 Mapper 文件夹:

@SpringBootApplication
@MapperScan("com.gblfy.mp.mybatisplus.samplesquickstart.mapper")
public class MybatisPlusSamplesQuickstartApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusSamplesQuickstartApplication.class, args);
    }
}

7、编写实体类

User.java(此处使用了 Lombok 简化代码)

@Data
public class User {

    //主键
    private Long id;
    //姓名
    private String name;
    //年龄
    private Integer age;
    //邮箱
    private String email;
    //创建时间
    private LocalDateTime createTime;
}

8、编写Mapper类 UserMapper.java

public interface UserMapper extends BaseMapper<User> {
}

9、开始使用

添加测试类,进行功能测试:

  • 第一种形式:
  • 在测试类上添加
    @RunWith(SpringRunner.class)
    @SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {


    @Autowired
    private UserMapper userMapper;

    @Test
    public void selectList() {

        //1.测试是否联通数据库 查询所有
        List<User> userList = userMapper.selectList(null);
        //2.断言 查询的数据是否是5条
        Assert.assertEquals(5, userList.size());
        //3.循环打印数据到控制台
        userList.forEach(System.out::println);
    }
}
  • 第二种形式(建议使用):
  • 在测试类上添加
    @Component
    继承(默认生成的测试类)MybatisPlusSamplesQuickstartApplicationTests
@Component
public class UserMapperTest extends MybatisPlusSamplesQuickstartApplicationTests {


    @Autowired
    private UserMapper userMapper;

    @Test
    public void selectList() {

        //1.测试是否联通数据库 查询所有
        List<User> userList = userMapper.selectList(null);
        //2.断言 查询的数据是否是5条
        Assert.assertEquals(5, userList.size());
        //3.循环打印数据到控制台
        userList.forEach(System.out::println);
    }
}

注:
1、H2和mysql区别,H2数据库不需要创建,直接可以用,是基于内存的。mysql数据库需要手动创建是基于磁盘的。

2、原理一样都是用到了@RunWith(SpringRunner.class)和@SpringBootTest这2个注解,建议使用第二种,所有的测试类都继承默认测试类,以后修改只需修改默认的测试类,其他的测试类都可以继承。

TIP
UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper,所以不填写就是无任何条件

10、控制台输出:

User(id=1, name=Jone, age=18, [email protected], createTime=2019-01-11T14:20:20)
User(id=2, name=Jack, age=20, [email protected], createTime=2019-02-05T11:12:22)
User(id=3, name=Tom, age=28, [email protected], createTime=2019-02-14T08:31:16)
User(id=4, name=Sandy, age=21, [email protected], createTime=2019-01-14T09:15:15)
User(id=5, name=Billie, age=24, [email protected], createTime=2019-01-14T09:48:16)

TIP
完整的代码示例请移步:Spring Boot 快速启动示例 | Spring MVC 快速启动示例

小结

通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

从以上步骤中,我们可以看到集成MyBatis-Plus非常的简单,只需要引入 starter 工程,并配置 mapper 扫描路径即可。

但 MyBatis-Plus 的强大远不止这些功能,想要详细了解 MyBatis-Plus 的强大功能?那就继续往下看吧!

想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!

相关标签: MyBatis-Plus