MyBatis-Flex:快速开始

本文参照官方文档的【快速开始】 章节,编写 Spring Boot 项目的代码示例。

第 1 步:创建数据库表并插入数据

CREATE TABLE article_cat (
  id INT NOT NULL AUTO_INCREMENT,
  cat_name VARCHAR(20) NOT NULL,
  parent_id INT DEFAULT NULL,
  show_in_nav TINYINT(1) DEFAULT NULL,
  sort_order SMALLINT DEFAULT NULL,
  create_time DATETIME DEFAULT NULL,
  update_time DATETIME DEFAULT NULL,
  deleted INT DEFAULT NULL,
  PRIMARY KEY (id)
);

INSERT INTO article_cat (cat_name, parent_id, show_in_nav, sort_order, create_time, update_time, deleted) 
VALUES 
('前端', 0, 1, 50, NOW(), NOW(), 0),
('java', 0, 1, 50, NOW(), NOW(), 0),
('算法', 0, 1, 50, NOW(), NOW(), 0),
('人工智能', 2, 1, 50, NOW(), NOW(), 0),
('移动开发', 2, 1, 50, NOW(), NOW(), 0),
('Python', 1, 1, 50, NOW(), NOW(), 0);

第 2 步:创建 Spring Boot 项目,并添加 Maven 依赖

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

需要在pom.xml添加 Maven 主要依赖示例:

 <dependencies>
        <!--用于创建 Web 应用程序的基本依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--MyBatis Flex 的 Spring Boot 启动器-->
        <dependency>
            <groupId>com.mybatis-flex</groupId>
            <artifactId>mybatis-flex-spring-boot-starter</artifactId>
            <version>1.8.1</version>
        </dependency>

        <!--MyBatis Flex 的处理器-->
        <dependency>
            <groupId>com.mybatis-flex</groupId>
            <artifactId>mybatis-flex-processor</artifactId>
            <version>1.8.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- 数据库连接池依赖必须添加-->
        <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.6</version>
    </dependency>

        <!--MySQL 数据库的 JDBC 驱动-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--Lombok 用于减少 Java 代码中的样板代码-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--这个依赖包含了用于单元测试和集成测试的库-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

第 3 步:对 Spring Boot 项目进行配置

在 application.properties 中配置数据源:

# 数据源的用户名
spring.datasource.username=root
# 数据源的密码
spring.datasource.password=123456
# JDBC 驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接 URL,包括数据库名称和连接参数
spring.datasource.url=jdbc:mysql://localhost:3306/edu?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

 如果是application.yml 则参考管网配置数据源:

# DataSource Config
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/flex_test
    username: root
    password: 12345678

application.propertiesapplication.yml都是Spring Boot中用于配置应用程序属性的文件,它们都能够实现相同的配置效果。它们之间的区别主要在于文件格式和语法上 。

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

// Spring Boot 主应用程序类
@SpringBootApplication
@MapperScan("com.example.demo.mapper") // 指定 MyBatis 映射器接口所在的包
public class DemoApplication {

    // 主方法,应用程序的入口点
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args); // 启动 Spring Boot 应用
    }

}

第 4 步:编写实体类和 Mapper 接口

编写实体类:这里使用了 Lombok 来简化代码。

@Data // 自动生成getter、setter等方法
@Table("article_cat") // 指定该类对应的数据库表名为 article_cat
public class Account {
    @Id(keyType = KeyType.Auto) // 指定 id 字段为主键,自增长
    private Integer id; // 主键 ID
    private String catName; // 类别名称
    private Integer parentId; // 父级类别 ID(如果有的话)
    private Byte showInNav; // 控制是否在导航中显示(0或1)
    private Short sortOrder; // 排序值,用于定义类别的排序
    private Date createTime; // 创建时间
    private Date updateTime; // 更新时间
    private Integer deleted; // 逻辑删除标识(标记记录是否已被删除)
}

Mapper 接口继承 BaseMapper 接口:

// 定义 AccountMapper 接口,继承自 BaseMapper<Account>
public interface AccountMapper extends BaseMapper<Account> {
    // 该接口可以直接使用 BaseMapper 提供的 CRUD 方法
    // 可以根据需要添加自定义查询方法
}

第 5 步:开始使用

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

package com.example.demo; // 指定包名
import com.example.demo.entity.Account; // 导入 Account 实体类
import com.example.demo.mapper.AccountMapper; // 导入 AccountMapper 接口
import org.junit.jupiter.api.Test; // 导入 JUnit 测试注解
import org.springframework.beans.factory.annotation.Autowired; // 导入 Spring 的依赖注入注解
import org.springframework.boot.test.context.SpringBootTest; // 导入 Spring Boot 测试注解
import java.util.List; // 导入 List 类

@SpringBootTest // 指定这是一个 Spring Boot 测试类
class DemoApplicationTests {
    @Autowired // 自动注入 AccountMapper 实例
    private AccountMapper accountMapper;
    @Test // 标记该方法为测试方法
    void contextLoads() {
        // 从数据库中获取所有 Account 实体
        List<Account> accounts = accountMapper.selectAll();
        // 打印每个 Account 实体的信息
        accounts.forEach(System.out::println);
    }
}

控制台输出:

Account(id=1, catName=前端, parentId=0, showInNav=1, sortOrder=50, createTime=Fri Sep 20 21:35:48 CST 2024, updateTime=Fri Sep 20 21:35:48 CST 2024, deleted=0)
Account(id=2, catName=java, parentId=0, showInNav=1, sortOrder=50, createTime=Fri Sep 20 21:35:48 CST 2024, updateTime=Fri Sep 20 21:35:48 CST 2024, deleted=0)
Account(id=3, catName=算法, parentId=0, showInNav=1, sortOrder=50, createTime=Fri Sep 20 21:35:48 CST 2024, updateTime=Fri Sep 20 21:35:48 CST 2024, deleted=0)
Account(id=4, catName=人工智能, parentId=2, showInNav=1, sortOrder=50, createTime=Fri Sep 20 21:35:48 CST 2024, updateTime=Fri Sep 20 21:35:48 CST 2024, deleted=0)
Account(id=5, catName=移动开发, parentId=2, showInNav=1, sortOrder=50, createTime=Fri Sep 20 21:35:48 CST 2024, updateTime=Fri Sep 20 21:35:48 CST 2024, deleted=0)
Account(id=6, catName=Python, parentId=1, showInNav=1, sortOrder=50, createTime=Fri Sep 20 21:35:48 CST 2024, updateTime=Fri Sep 20 21:35:48 CST 2024, deleted=0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值