Why MyBatis-Flex Beats MyBatis-Plus: Features, Benchmarks, and Quick Start

MyBatis-Flex is a lightweight, high-performance MyBatis enhancement offering flexible CRUD, advanced QueryWrapper, extensive database support, and benchmarked speeds up to ten times faster than MyBatis-Plus, with a step-by-step quick-start guide covering table creation, Maven setup, Spring Boot configuration, entity mapping, and usage examples.

Architecture Digest
Architecture Digest
Architecture Digest
Why MyBatis-Flex Beats MyBatis-Plus: Features, Benchmarks, and Quick Start

Overview

MyBatis-Flex is a lightweight MyBatis enhancement that provides a fluent QueryWrapper, reduces boilerplate SQL, and supports many relational databases.

Key Characteristics

Lightweight : No third‑party dependencies or interceptors; uses SqlProvider for direct SQL generation, which yields high performance and easy debugging.

Fluent API : QueryWrapper enables chainable select, where, join, union and sub‑query construction without writing SQL strings.

Rich Features : Supports CRUD, pagination with total‑count caching, multi‑primary keys, logical deletion, optimistic lock, data masking, audit, automatic field fill, multi‑tenant, dynamic table name/schema, and RPC‑compatible query objects.

Database Compatibility : Works with MySQL, MariaDB, Oracle (11g/12c), DB2, HSQL, SQLite, PostgreSQL, SQL Server, ClickHouse, and many others via custom dialects.

Performance

Internal benchmarks show MyBatis‑Flex is 5‑10× faster than MyBatis‑Plus for single‑record queries, batch queries, pagination and updates. Detailed results are published at https://mybatis-flex.com/zh/intro/benchmark.html.

Quick‑Start (Spring Boot)

1. Create a table

CREATE TABLE IF NOT EXISTS tb_account (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  user_name VARCHAR(100),
  age INT,
  birthday DATETIME
);

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

2. Add Maven dependencies

<dependencies>
  <dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.5.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>
  <!-- test only -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

3. Configure datasource

# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/flex_test
    username: root
    password: 12345678

Add @MapperScan("com.mybatisflex.test.mapper") to the main application class.

4. Define entity and mapper

@Data
@Table("tb_account")
public class Account {
    @Id(keyType = KeyType.Auto)
    private Long id;
    private String userName;
    private Integer age;
    private Date birthday;
}
public interface AccountMapper extends BaseMapper<Account> {}

5. Use QueryWrapper in code

@SpringBootTest
class MybatisFlexDemoTest {

    @Autowired
    private AccountMapper accountMapper;

    @Test
    void queryByAge() {
        QueryWrapper query = QueryWrapper.create()
            .select()
            .where(ACCOUNT.AGE.eq(18)); // ACCOUNT is a generated column reference class
        Account account = accountMapper.selectOneByQuery(query);
        System.out.println(account);
    }
}

Additional Resources

Official documentation: https://mybatis-flex.com/

Code generator guide: https://mybatis-flex.com/zh/others/codegen.html

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

JavaPerformanceDatabaseBackend DevelopmentormMybatis-Flex
Architecture Digest
Written by

Architecture Digest

Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.