All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.schoolwow.quickdao.module.operation.kit.DAOOperation Maven / Gradle / Ivy

There is a newer version: 5.3.1
Show newest version
package cn.schoolwow.quickdao.module.operation.kit;

import cn.schoolwow.quickdao.domain.QuickDAOConfig;
import cn.schoolwow.quickdao.domain.database.parent.UpgradeRequest;
import cn.schoolwow.quickdao.domain.entity.Entity;
import cn.schoolwow.quickdao.domain.entity.Property;
import cn.schoolwow.quickdao.domain.operation.GenerateJavaSourceFileRequest;
import cn.schoolwow.quickdao.domain.provider.DatabaseProvider;
import cn.schoolwow.quickdao.domain.transaction.Transaction;

import javax.sql.DataSource;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

public interface DAOOperation {
    /**
     * 开启事务
     */
    Transaction startTransaction();

    /**
     * 开启事务
     */
    void startTransaction(Consumer transactionConsumer);

    /**
     * 获取连接池
     */
    DataSource getDataSource();

    /**
     * 获取扫描的所有实体类信息
     */
    Map getEntityMap();

    /**
     * 获取实体类表
     *
     * @param clazz 实体类
     */
    Entity getEntity(Class clazz);

    /**
     * 获取实体类表
     *
     * @param tableName 数据库表名
     */
    Entity getEntity(String tableName);

    /**
     * 获取实体类表字段
     *
     * @param clazz 实体类
     * @param fieldName 字段名
     */
    Property getEntityProperty(Class clazz, String fieldName);

    /**
     * 获取数据库提供者
     */
    DatabaseProvider getDatabaseProvider();

    /**
     * 获取配置信息
     */
    QuickDAOConfig getQuickDAOConfig();

    /**
     * 是否记录流程日志
     * */
    void recordFlowLog(boolean recordFlowLog);

    /**
     * 是否记录SQL日志
     * */
    void recordSqlLog(boolean recordSqlLog);

    /**
     * 开启记录模式,只记录SQL语句,不执行
     * */
    void startRecord();

    /**
     * 停止记录模式
     * @return 返回记录SQL语句
     * */
    String stopRecord();

    /**
     * 线程绑定日志记录,总是创建新日志对象
     * @param logEntity 日志实例类
     * */
     T log(Class logEntity);

    /**
     * 线程绑定日志记录,存在则返回,不存在返回null
     * @param logEntity 日志实例类
     * */
     T logIfExist(Class logEntity);

    /**
     * 线程绑定日志实例记录,存在则返回,不存在返回null
     * @param uniqueKey 日志实例唯一值
     * @param logEntity 日志实例类
     * */
     T logMapIfExist(String uniqueKey, Class logEntity);

    /**
     * 线程绑定多个日志实例记录,总是创建新日志对象
     * @param logEntity 日志实例类
     * */
     List logMap(Class logEntity);

    /**
     * 线程绑定多个日志实例记录,总是创建新日志对象
     * @param uniqueKey 日志实例唯一值
     * @param logEntity 日志实例类
     * */
     T logMap(String uniqueKey, Class logEntity);

    /**
     * 清除日志记录
     * */
    void clearLog();

    /**
     * 插入线程绑定日志记录
     * */
    void insertLog();

    /**
     * 数据库升级语句
     * */
    void upgrade(UpgradeRequest upgradeRequest);

    /**
     * 根据数据库表生成实体类java文件
     * */
    void generateJavaSourceFile(GenerateJavaSourceFileRequest generateEntityFileRequest);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy