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;
}
- 使用
@Table("tb_account")
设置实体类与表名的映射关系 - 使用
@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的生成和执行过程,实现灵活的扩展功能。代码结构清晰,易于维护,同时提供了丰富的文档和示例,方便快速上手和解决问题。