CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-mybatis-flex--mybatis-flex-core

MyBatis-Flex is an elegant enhancement framework for MyBatis providing type-safe query building, active record patterns, and comprehensive ORM capabilities

Pending
Overview
Eval results
Files

bootstrap-config.mddocs/

Bootstrap and Configuration

Framework initialization, global configuration, and multi-datasource setup for MyBatis-Flex applications.

Capabilities

MybatisFlexBootstrap

Main entry point for initializing the MyBatis-Flex framework with datasource configuration and mapper registration.

/**
 * Main bootstrap class for MyBatis-Flex framework initialization
 */
public class MybatisFlexBootstrap {
    /**
     * Get singleton instance of the bootstrap
     * @return MybatisFlexBootstrap instance
     */
    public static MybatisFlexBootstrap getInstance();
    
    /**
     * Set the primary datasource
     * @param dataSource DataSource instance
     * @return bootstrap instance for chaining
     */
    public MybatisFlexBootstrap setDataSource(DataSource dataSource);
    
    /**
     * Add named datasource for multi-datasource scenarios
     * @param key datasource key/name
     * @param dataSource DataSource instance
     * @return bootstrap instance for chaining
     */
    public MybatisFlexBootstrap addDataSource(String key, DataSource dataSource);
    
    /**
     * Register mapper class
     * @param mapperClass mapper interface class
     * @return bootstrap instance for chaining
     */
    public MybatisFlexBootstrap addMapper(Class<?> mapperClass);
    
    /**
     * Start the MyBatis-Flex framework
     * @return bootstrap instance
     */
    public MybatisFlexBootstrap start();
    
    /**
     * Get mapper instance by class
     * @param mapperClass mapper interface class
     * @return mapper instance
     */
    public <T> T getMapper(Class<T> mapperClass);
    
    /**
     * Get MyBatis Configuration object
     * @return Configuration instance
     */
    public Configuration getConfiguration();
}

Basic Usage:

import com.mybatisflex.core.MybatisFlexBootstrap;
import com.zaxxer.hikari.HikariDataSource;

// Create datasource
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
dataSource.setUsername("root");
dataSource.setPassword("password");

// Initialize MyBatis-Flex
MybatisFlexBootstrap bootstrap = MybatisFlexBootstrap.getInstance()
    .setDataSource(dataSource)
    .addMapper(UserMapper.class)
    .addMapper(OrderMapper.class)
    .start();

// Get mapper instances
UserMapper userMapper = bootstrap.getMapper(UserMapper.class);
OrderMapper orderMapper = bootstrap.getMapper(OrderMapper.class);

Multi-DataSource Setup:

// Multiple datasources
MybatisFlexBootstrap.getInstance()
    .setDataSource(primaryDataSource)           // Primary datasource
    .addDataSource("read", readOnlyDataSource)  // Read-only replica
    .addDataSource("analytics", analyticsDataSource) // Analytics DB
    .addMapper(UserMapper.class)
    .start();

FlexGlobalConfig

Global configuration management for MyBatis-Flex behavior including database types, key generation, and framework features.

/**
 * Global configuration for MyBatis-Flex framework
 */
public class FlexGlobalConfig {
    /**
     * Get default global configuration
     * @return default FlexGlobalConfig instance
     */
    public static FlexGlobalConfig getDefaultConfig();
    
    /**
     * Set configuration for specific environment
     * @param configId configuration identifier
     * @param config FlexGlobalConfig instance
     * @param isDefault whether this is the default config
     */
    public static void setConfig(String configId, FlexGlobalConfig config, boolean isDefault);
    
    /**
     * Get database type
     * @return DbType enum value
     */
    public DbType getDbType();
    
    /**
     * Set database type for SQL dialect
     * @param dbType database type
     */
    public void setDbType(DbType dbType);
    
    /**
     * Get key generation configuration
     * @return KeyConfig instance
     */
    public KeyConfig getKeyConfig();
    
    /**
     * Set key generation configuration
     * @param keyConfig key generation settings
     */
    public void setKeyConfig(KeyConfig keyConfig);
    
    /**
     * Get entity listeners configuration
     * @return entity listeners
     */
    public EntityListeners getEntityListeners();
    
    /**
     * Set entity listeners for lifecycle events
     * @param entityListeners listeners configuration
     */
    public void setEntityListeners(EntityListeners entityListeners);
    
    /**
     * Check if optimistic locking is enabled
     * @return true if enabled
     */
    public boolean isOptimisticLockEnabled();
    
    /**
     * Enable or disable optimistic locking
     * @param enabled enable flag
     */
    public void setOptimisticLockEnabled(boolean enabled);
}

Configuration Example:

import com.mybatisflex.core.FlexGlobalConfig;
import com.mybatisflex.core.dialect.DbType;
import com.mybatisflex.core.keygen.KeyGenerators;

// Create custom configuration
FlexGlobalConfig config = new FlexGlobalConfig();
config.setDbType(DbType.MYSQL);

// Configure key generation
config.getKeyConfig().setKeyGenerator(KeyGenerators.snowFlakeId);

// Set as default configuration
FlexGlobalConfig.setConfig("default", config, true);

KeyConfig

Configuration for primary key generation strategies.

/**
 * Key generation configuration
 */
public static class KeyConfig {
    /**
     * Get key generator
     * @return IKeyGenerator instance
     */
    public IKeyGenerator getKeyGenerator();
    
    /**
     * Set key generator strategy
     * @param keyGenerator key generator implementation
     */
    public void setKeyGenerator(IKeyGenerator keyGenerator);
    
    /**
     * Check if key generation before insert is enabled
     * @return true if enabled
     */
    public boolean isKeyGeneratorBefore();
    
    /**
     * Set whether to generate keys before insert
     * @param keyGeneratorBefore enable flag
     */
    public void setKeyGeneratorBefore(boolean keyGeneratorBefore);
}

EntityListeners

Entity lifecycle event listeners for insert, update, and set operations.

/**
 * Entity lifecycle listeners
 */
public static class EntityListeners {
    /**
     * Get insert listener
     * @return InsertListener instance
     */
    public InsertListener getInsertListener();
    
    /**
     * Set insert listener for before/after insert events
     * @param insertListener listener implementation
     */
    public void setInsertListener(InsertListener insertListener);
    
    /**
     * Get update listener
     * @return UpdateListener instance
     */
    public UpdateListener getUpdateListener();
    
    /**
     * Set update listener for before/after update events
     * @param updateListener listener implementation
     */
    public void setUpdateListener(UpdateListener updateListener);
    
    /**
     * Get set listener
     * @return SetListener instance
     */
    public SetListener getSetListener();
    
    /**
     * Set field value listener
     * @param setListener listener implementation
     */
    public void setSetListener(SetListener setListener);
}

Types

// Listener interfaces
public interface InsertListener {
    void onInsert(Object entity);
}

public interface UpdateListener {
    void onUpdate(Object entity);
}

public interface SetListener {
    Object onSet(Object entity, String property, Object value);
}

// Key generation
public interface IKeyGenerator {
    Object generate(Object entity, String keyProperty);
}

Install with Tessl CLI

npx tessl i tessl/maven-com-mybatis-flex--mybatis-flex-core

docs

active-record.md

bootstrap-config.md

crud-operations.md

database-support.md

index.md

pagination.md

query-builder.md

row-operations.md

service-layer.md

update-chain.md

tile.json