Mybatis-Flex快速入门教程_mybatis

目录

一、Mybatis-Flex是什么?

二、Mybatis-Flex的有什么特点?

三、Mybatis-Flex和同类框架对比

四、Mybatis-Flex支持的数据库类型

五、快速入门

(1)引入依赖 

(2)创建数据库

(3)编写实体类和 Mapper

(4)通过 main 方法开始使用 Mybatis-Flex(无 Spring 的场景)

(5)更多示例


一、Mybatis-Flex是什么?

Mybatis-Flex

官网文档:Mybatis-Flex - Mybatis-Flex 官方网站

二、Mybatis-Flex的有什么特点?

1、轻量:除了 MyBatis,没有任何第三方依赖轻依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的轻实现。同时,在执行的过程中,没有任何的 Sql 解析(Parse)轻运行。 这带来了几个好处:1、极高的性能;2、极易对代码进行跟踪和调试; 3、把控性更高。

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

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

三、Mybatis-Flex和同类框架对比

(1)功能对比:Mybatis-Flex 和同类框架「功能」对比 - Mybatis-Flex 官方网站 (2)性能对比:Mybatis-Flex 和同类框架「性能」对比 - Mybatis-Flex 官方网站

四、Mybatis-Flex支持的数据库类型

数据库

描述

mysql

MySql 数据库

mariadb

MariaDB 数据库

oracle

Oracle11g 及以下数据库

oracle12c

Oracle12c 及以上数据库

db2

DB2 数据库

hsql

HSQL 数据库

sqlite

SQLite 数据库

postgresql

PostgreSQL 数据库

sqlserver2005

SQLServer2005 数据库

sqlserver

SQLServer 数据库

dm

达梦数据库

xugu

虚谷数据库

kingbasees

人大金仓数据库

phoenix

Phoenix HBase 数据库

gauss

Gauss 数据库

clickhouse

ClickHouse 数据库

gbase

南大通用(华库)数据库

gbase-8s

南大通用数据库 GBase 8s

oscar

神通数据库

sybase

Sybase ASE 数据库

OceanBase

OceanBase 数据库

Firebird

Firebird 数据库

derby

Derby 数据库

highgo

瀚高数据库

cubrid

CUBRID 数据库

goldilocks

GOLDILOCKS 数据库

csiidb

CSIIDB 数据库

hana

SAP_HANA 数据库

impala

Impala 数据库

vertica

Vertica 数据库

xcloud

行云数据库

redshift

亚马逊 redshift 数据库

openGauss

华为 openGauss 数据库

TDengine

TDengine 数据库

informix

Informix 数据库

greenplum

Greenplum 数据库

uxdb

优炫数据库

五、快速入门

(1)引入依赖 

1、只用到了 Mybatis,没用到 Spring 的场景

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-core</artifactId>
    <version>1.2.0</version>
</dependency>

2、用到了 Spring 的场景

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring</artifactId>
    <version>1.2.0</version>
</dependency>

3、用到了 Spring Boot 的场景

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.2.0</version>
</dependency>

(2)创建数据库

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

(3)编写实体类和 Mapper

@Table("tb_account")
public class Account {

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

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

Mapper 接口继承 BaseMapper 接口:

public interface AccountMapper extends BaseMapper<Account> {
    
}

 (4)通过 main 方法开始使用 Mybatis-Flex(无 Spring 的场景)

public class HelloWorld {
    public static void main(String[] args) {

        //创建数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex");
        dataSource.setUsername("username");
        dataSource.setPassword("password");

        //配置数据源
        MybatisFlexBootstrap.getInstance()
                .setDatasource(dataSource)
                .addMapper(AccountMapper.class)
                .start();

        //获取 mapper
        AccountMapper mapper = MybatisFlexBootstrap.getInstance()
                .getMapper(AccountMapper.class);
        
        //示例1:查询 id=1 的数据
        Account account = mapper.selectOneById(1);
        
        
        //示例2:根据 QueryWrapper 查询 id >= 100 的数据列表
        QueryWrapper query = QueryWrapper.create()
                .where(ACCOUNT.ID.ge(100));
        List<Account> accounts = mapper.selectListByQuery(query);
        
        
        //示例3:者使用 Db + Row 查询
        String sql = "select * from tb_account where age > ?";
        List<Row> rows = Db.selectListBySql(sql, 18);
    }
}

(5)更多示例