MyBatis-Flex的创建与使用

MyBatis-Flex是一个优雅的MyBatis增强框架,它非常轻量、同时拥有极高的性能,更加灵活和易于使用。可以使用 MyBatis-Flex 提供的 QueryWrapper 来构建复杂的查询条件,支持多表查询、联接查询、子查询等高级功能。使用 IDE 的构建工具(如 Maven 或 Gradle)编译项目,MyBatis-Flex 会在使用 APT 技术时自动生成一些必要的类和文件。MyBatis-Flex 提供了代码生成器,可以根据数据库表结构自动生成实体类和 Mapper 接口,减少手动编写的重复劳动。在开发过程中,你可以使用 IDE 的调试工具来调试 SQL 查询和 Mapper 接口,确保它们的正确性和性能。

第一步:创建数据库

在MySQL中创建一个数据库名为flex_demo,创建数据库表和插入数据。代码如下:

CREATE TABLE IF NOT EXISTS `tb_account`
(
    `id`        INTEGER PRIMARY KEY auto_increment,
    `user_name` VARCHAR(100),
    `age`       INTEGER,
    `birthday`  DATETIME);

INSERT INTO tb_account(id, user_name, age, birthday)
VALUES (1, '张三', 18, '2020-01-11'),
       (2, '李四', 19, '2021-03-21'),
	   (3, '王五', 20, '2021-04-21');

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

2.1.新建项目mybatis-flex-demo

2.2.添加Maven依赖和配置数据源

2.3.在pom.xml文件中添加Maven的主要依赖,代码如下:

<dependencies>
    <dependency>
        <groupId>com.mybatis-flex</groupId>
        <artifactId>mybatis-flex-spring-boot-starter</artifactId>
        <version>1.9.7</version>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
    </dependency>
    <!-- for test only -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

注:如果您当前使用的是 SpringBoot v3.x 版本,需要把依赖 mybatis-flex-spring-boot-starter 修改为:mybatis-flex-spring-boot3-starter。

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

在resources文件项目下的application.properties文件改为application.yml,配置数据源,代码如下:

# DataSource Config
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/flex_test
    username: 数据库账号
    password: 数据库密码

在MybatisFlexDemoApplication文件中添加 @MapperScan 注解,创建并扫描 Mapper 文件夹,代码如下:

package com.mybatisflex.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.mybatisflex.demo.mapper")
public class MybatisFlexDemoApplication {

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

}

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

创建一个entity包,并创建Account接口,使用Lombok 来简化代码,代码如下:

package com.mybatisflex.demo.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.util.Date;

@Data
@Table("tb_account")
public class Account {

    @Id(keyType = KeyType.Auto)
    private Long id;
    private String userName;
    private Integer age;
    private Date birthday;

}
  1. 使用 @Table("tb_account") 设置实体类与表名的映射关系
  2. 使用 @Id(keyType = KeyType.Auto) 标识主键为自增

创建AccountMapper类,代码如下:

package com.mybatisflex.demo.mapper;

import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.demo.entity.Account;

public interface AccountMapper extends BaseMapper<Account> {

}

第五步:添加测试类,进行功能测试

代码如下:

package com.mybatisflex.demo;

import com.mybatisflex.demo.entity.Account;
import com.mybatisflex.demo.mapper.AccountMapper;
import lombok.val;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class MybatisFlexDemoApplicationTests {
    @Autowired
    private AccountMapper accountMapper;

    @Test
    void contextLoads() {
        List<Account> accounts = accountMapper.selectAll();
        accounts.forEach(System.out::println);
    }

}

控制台输出结果为:

总结:

MyBatis-Flex除了MyBatis本身外,无任何第三方依赖,这减少了项目的体积和复杂度,提高了性能。提供了灵活的QueryWrapper,支持多表查询、多主键、逻辑删除、乐观锁更新、数据填充、数据脱敏等功能,减少了SQL编写的工作量。对查询性能进行了优化,通过智能缓存和预编译SQL语句等技术,提高了查询的执行效率。采用插件化架构,允许开发者自定义SQL的生成和执行过程,实现灵活的扩展功能。代码结构清晰,易于维护,同时提供了丰富的文档和示例,方便快速上手和解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值