Mybatis-Plus的竞争对手来了,试试 MyBatis-Flex

01 引言

如果你厌倦了原生的Mybatis的写法,你可能会选择比较火的ORM框架Mybatis-PlusMybaits-Plus虽然好用,但是部分功能是收费的,如数据脱敏、字段权限、字段加密以及字典回写等功能。如果类似的功能你仍想要白嫖,那么MyBatis-Flex将是不错的选择,所有的功能全部免费。

02 简介

MyBatis-Flex 是一个基于 MyBatis 的增强框架,它保留了 MyBatis 的所有优点,同时引入了更多现代化特性,旨在提供更优雅、更高效的开发体验。与传统的 MyBatis 增强工具不同,MyBatis-Flex 从头开始设计,专注于提供轻量级、高性能且功能丰富的 ORM 解决方案。

小编从该项目刚开源不久就关注到了,当时的star不足1000。后续就关注的少了,最近发现其star数已经2.4k了。

GitHub地址:https://github.com/mybatis-flex/mybatis-flex

Gitee地址:https://gitee.com/mybatis-flex/mybatis-flex

文档地址: https://mybatis-flex.com/

03 最佳实践

其搭建的方式基本和Myabtis-Plus一致。

3.1 Maven依赖

小编的使用的是springboot2.x

 <dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.11.3</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>

需要注意的是我们自行引入数据库连接池,也可以替换成其他的。

3.2 配置文件

#spring.datasource.type=com.alibaba.druid.pool.DruidDataSourc
#spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mysql://1127.0.0.1:3306/test
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root

如果引入的数据库连接池是HikariCP,可以不用配置spring.datasource.type属性,因为默认就是HikariCP数据库连接池。如果引入其他的数据库连接池,则需要手动指定,如Druid

3.3 映射实体

@Data
@Table("users")
public class Users {

    @Id(keyType = KeyType.Auto)
    private Integer id;
    private String username;
    private String password;
    private String passwordSalt;
    private Boolean delFlag;
}
  • 使用 @Table("tb_account") 设置实体类与表名的映射关系
  • 使用 @Id(keyType = KeyType.Auto) 标识主键为自增

这里的注解几乎和Myabtis-plus一致。

3.4 Mapper接口

public interface UsersMapper extends BaseMapper<Users> {

}

3.5 启动类识别

启动类需要识别Mapper接口,需要使用注解@MapperScan

3.6 测试查询01

@Autowired
private UsersMapper usersMapper;

@Test
void contextLoads() {
    Users users = usersMapper.selectOneById(1);
    System.out.println(users);
}

这里使用了框架自带的查询功能,效果如图:

3.7 测试自定义查询

@Test
void test01() {
    QueryWrapper wrapper = QueryWrapper.create()
                .and(USERS.USERNAME.eq("12345"));
    Users users = usersMapper.selectOneByQuery(wrapper);
    System.out.println(users);
}

3.8 测试新增

@Test
void test02() {
    Users users = new Users();
    users.setUsername("ws");
    users.setPassword("123456");
    usersMapper.insert(users);
}

3.9 测试更新

@Test
void test03() {
    UpdateChain.of(Users.class)
            .set(USERS.PASSWORD_SALT, "0000")
            .where(Users::getUsername).eq("ws")
            .update();
}

3.10 测试删除

@Test
void test04() {
    QueryWrapper queryWrapper = QueryWrapper.create()
            .and(USERS.USERNAME.eq("ws"));
    usersMapper.deleteByQuery(queryWrapper);
}

04 与同类框架对比

相比于传统的 MyBatis-Plus,MyBatis-Flex 在以下方面表现更佳:

4.1 轻量级

除了 MyBatis,没有任何第三方依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的。同时,在执行的过程中,没有任何的 Sql 解析(Parse)。 这带来了几个好处:

  • 极高的性能;
  • 极易对代码进行跟踪和调试;
  • 更高的把控性。

4.2 灵活性

支持 Entity 的增删改查、以及分页查询的同时,MyBatis-Flex 提供了 Db + Row工具,可以无需实体类对数据库进行增删改查以及分页查询。 与此同时MyBatis-Flex 内置的 QueryWrapper可以轻易的帮助我们实现 多表查询链接查询子查询 等等常见的 SQL 场景。

4.3 强大

支持任意关系型数据库,还可以通过方言持续扩展,同时支持 多(复合)主键逻辑删除乐观锁配置数据脱敏数据审计数据填充 等等功能。

05 小结

MyBatis-Flex 作为一个新兴的 MyBatis 增强框架,在保留 MyBatis 灵活性的同时,通过现代化的 API 设计和丰富的功能特性,显著提升了开发效率和运行性能。无论是新项目技术选型还是现有 MyBatis 项目的升级改造,MyBatis-Flex 都值得尝试。

其活跃的社区生态、详细的文档支持以及持续的版本迭代,使得 MyBatis-Flex 成为 Java ORM 领域一个极具竞争力的选择。对于追求代码质量、开发效率和系统性能的团队来说,MyBatis-Flex 无疑是一个值得深入研究和应用的技术方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值