最终王冠手游
1.2GB · 2025-12-07
如果你厌倦了原生的Mybatis的写法,你可能会选择比较火的ORM框架Mybatis-Plus。Mybaits-Plus虽然好用,但是部分功能是收费的,如数据脱敏、字段权限、字段加密以及字典回写等功能。如果类似的功能你仍想要白嫖,那么MyBatis-Flex将是不错的选择,所有的功能全部免费。
MyBatis-Flex 是一个基于 MyBatis 的增强框架,它保留了 MyBatis 的所有优点,同时引入了更多现代化特性,旨在提供更优雅、更高效的开发体验。与传统的 MyBatis 增强工具不同,MyBatis-Flex 从头开始设计,专注于提供轻量级、高性能且功能丰富的 ORM 解决方案。
小编从该项目刚开源不久就关注到了,当时的star不足1000。后续就关注的少了,最近发现其star数已经2.4k了。
GitHub地址:github.com/mybatis-fle…
Gitee地址:gitee.com/mybatis-fle…
文档地址: mybatis-flex.com/
其搭建的方式基本和Myabtis-Plus一致。
小编的使用的是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>
需要注意的是我们自行引入数据库连接池,也可以替换成其他的。
#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。
@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一致。
public interface UsersMapper extends BaseMapper<Users> {
}
启动类需要识别Mapper接口,需要使用注解@MapperScan
@Autowired
private UsersMapper usersMapper;
@Test
void contextLoads() {
Users users = usersMapper.selectOneById(1);
System.out.println(users);
}
这里使用了框架自带的查询功能,效果如图:
@Test
void test01() {
QueryWrapper wrapper = QueryWrapper.create()
.and(USERS.USERNAME.eq("12345"));
Users users = usersMapper.selectOneByQuery(wrapper);
System.out.println(users);
}
@Test
void test02() {
Users users = new Users();
users.setUsername("ws");
users.setPassword("123456");
usersMapper.insert(users);
}
@Test
void test03() {
UpdateChain.of(Users.class)
.set(USERS.PASSWORD_SALT, "0000")
.where(Users::getUsername).eq("ws")
.update();
}
@Test
void test04() {
QueryWrapper queryWrapper = QueryWrapper.create()
.and(USERS.USERNAME.eq("ws"));
usersMapper.deleteByQuery(queryWrapper);
}
相比于传统的 MyBatis-Plus,MyBatis-Flex 在以下方面表现更佳:
除了 MyBatis,没有任何第三方依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的。同时,在执行的过程中,没有任何的 Sql 解析(Parse)。 这带来了几个好处:
支持 Entity 的增删改查、以及分页查询的同时,MyBatis-Flex 提供了 Db + Row工具,可以无需实体类对数据库进行增删改查以及分页查询。 与此同时MyBatis-Flex 内置的 QueryWrapper可以轻易的帮助我们实现 多表查询、链接查询、子查询 等等常见的 SQL 场景。
支持任意关系型数据库,还可以通过方言持续扩展,同时支持 多(复合)主键、逻辑删除、乐观锁配置、数据脱敏、数据审计、 数据填充 等等功能。
MyBatis-Flex 作为一个新兴的 MyBatis 增强框架,在保留 MyBatis 灵活性的同时,通过现代化的 API 设计和丰富的功能特性,显著提升了开发效率和运行性能。无论是新项目技术选型还是现有 MyBatis 项目的升级改造,MyBatis-Flex 都值得尝试。
其活跃的社区生态、详细的文档支持以及持续的版本迭代,使得 MyBatis-Flex 成为 Java ORM 领域一个极具竞争力的选择。对于追求代码质量、开发效率和系统性能的团队来说,MyBatis-Flex 无疑是一个值得深入研究和应用的技术方案。