Search in sources :

Example 6 with DbType

use of com.baomidou.mybatisplus.annotation.DbType in project mybatis-plus-samples by baomidou.

the class DbConfigurations method globalConfiguration.

@Bean
public GlobalConfig globalConfiguration() {
    GlobalConfig conf = new GlobalConfig();
    conf.setDbConfig(new GlobalConfig.DbConfig().setKeyGenerators(Arrays.asList(// h2 1.x 的写法(默认 2.x 的写法)
    new IKeyGenerator() {

        @Override
        public String executeSql(String incrementerName) {
            return "select " + incrementerName + ".nextval";
        }

        @Override
        public DbType dbType() {
            return DbType.POSTGRE_SQL;
        }
    })));
    return conf;
}
Also used : GlobalConfig(com.baomidou.mybatisplus.core.config.GlobalConfig) IKeyGenerator(com.baomidou.mybatisplus.core.incrementer.IKeyGenerator) DbType(com.baomidou.mybatisplus.annotation.DbType) Bean(org.springframework.context.annotation.Bean)

Example 7 with DbType

use of com.baomidou.mybatisplus.annotation.DbType in project ballcat-codegen by ballcat-projects.

the class DynamicDataSourceHelper method addDynamicDataSource.

/**
 * 添加动态数据源
 * @param dataSourceProperty 数据源配置
 */
public void addDynamicDataSource(DataSourceProperty dataSourceProperty) {
    DataSource dataSource = dataSourceCreator.createDataSource(dataSourceProperty);
    String dsName = dataSourceProperty.getPoolName();
    DbType dbType = DbTypeUtils.getDbType(dataSourceProperty.getUrl());
    WrappedDataSource wrappedDataSource = new WrappedDataSource(dsName, dbType, dataSource);
    dynamicRoutingDataSource.addDataSource(dsName, wrappedDataSource);
}
Also used : DbType(com.baomidou.mybatisplus.annotation.DbType) DynamicRoutingDataSource(com.baomidou.dynamic.datasource.DynamicRoutingDataSource) DataSource(javax.sql.DataSource)

Example 8 with DbType

use of com.baomidou.mybatisplus.annotation.DbType in project ballcat-codegen by ballcat-projects.

the class TableInfoQuery method queryTableDetails.

/**
 * 查询指定表的详细信息
 * @param tableName 表名称
 * @return TableDetails
 */
public TableDetails queryTableDetails(String tableName) {
    DbType dbType = getDbType();
    TableInfoMapper baseMapper = tableInfoMapperMap.get(dbType);
    // 查询表信息
    TableInfo tableInfo = baseMapper.queryTableInfo(tableName);
    // 查询列信息
    List<ColumnInfo> columnInfoList = baseMapper.listColumnInfo(tableName);
    TableDetails tableDetails = new TableDetails();
    tableDetails.setDbType(dbType);
    tableDetails.setTableName(tableInfo.getTableName());
    tableDetails.setEngine(tableInfo.getEngine());
    tableDetails.setTableComment(tableInfo.getTableComment());
    tableDetails.setCreateTime(tableInfo.getCreateTime());
    tableDetails.setColumnInfos(columnInfoList);
    return tableDetails;
}
Also used : TableDetails(com.hccake.ballcat.codegen.model.bo.TableDetails) ColumnInfo(com.hccake.ballcat.codegen.model.bo.ColumnInfo) TableInfo(com.hccake.ballcat.codegen.model.bo.TableInfo) DbType(com.baomidou.mybatisplus.annotation.DbType) TableInfoMapper(com.hccake.ballcat.codegen.database.TableInfoMapper)

Example 9 with DbType

use of com.baomidou.mybatisplus.annotation.DbType in project ballcat-codegen by ballcat-projects.

the class GenUtils method getGenerateProperties.

/**
 * 根据表信息和字段信息获取对应的配置属性
 * @param tableDetails 表详情
 * @param tablePrefix 表前缀
 * @return GenerateProperties
 */
private GenerateProperties getGenerateProperties(TableDetails tableDetails, String tablePrefix) {
    // 表信息
    GenerateProperties generateProperties = new GenerateProperties();
    // 表名
    String tableName = tableDetails.getTableName();
    generateProperties.setTableName(tableName);
    // 去除前缀的表名
    String noPrefixTableName = tableName;
    if (StringUtils.isNotBlank(tablePrefix) && tableName.startsWith(tablePrefix)) {
        noPrefixTableName = tableName.substring(tablePrefix.length());
    }
    // 表备注
    generateProperties.setComments(tableDetails.getTableComment());
    // 大驼峰类名
    String className = underlineToCamel(noPrefixTableName);
    generateProperties.setClassName(className);
    // 表别名
    generateProperties.setTableAlias(prodAlias(className));
    // 小驼峰类名
    String classname = StringUtils.uncapitalize(className);
    generateProperties.setClassname(classname);
    // 请求路径
    generateProperties.setPath(noPrefixTableName.replace('_', '-'));
    generateProperties.setPathName(classname.toLowerCase());
    // 列信息
    List<ColumnProperties> columnList = new ArrayList<>();
    // 类型转换器
    DbType dbType = tableDetails.getDbType();
    DbTypeConverter dbTypeConverter = DbTypeConverterManager.getTypeConverter(dbType);
    Assert.notNull(dbTypeConverter, "未找到对应的数据库类型转换器:{}", dbType);
    for (ColumnInfo columnInfo : tableDetails.getColumnInfos()) {
        String columnName = columnInfo.getColumnName();
        ColumnProperties columnProperties = new ColumnProperties();
        columnProperties.setColumnName(columnName);
        columnProperties.setDataType(columnInfo.getDataType());
        columnProperties.setComments(columnInfo.getColumnComment());
        columnProperties.setExtra(columnInfo.getExtra());
        columnProperties.setColumnType(columnInfo.getColumnType());
        // 列名转换成Java属性名
        String capitalizedAttrName = underlineToCamel(columnName);
        columnProperties.setCapitalizedAttrName(capitalizedAttrName);
        columnProperties.setAttrName(StringUtils.uncapitalize(capitalizedAttrName));
        // 列的数据类型,转换成Java类型
        IColumnType columnType = dbTypeConverter.convert(columnProperties.getDataType());
        String columnJavaType = columnType.getType();
        columnProperties.setAttrType(columnJavaType);
        // 列的 ts数据类型
        columnProperties.setTsAttrType(TypeScriptTypeConverter.javaToTs(columnJavaType));
        // 是否主键
        if ("PRI".equalsIgnoreCase(columnInfo.getColumnKey()) && generateProperties.getPk() == null) {
            generateProperties.setPk(columnProperties);
        }
        columnList.add(columnProperties);
    }
    generateProperties.setColumns(columnList);
    // 没主键,则第一个字段为主键
    if (generateProperties.getPk() == null) {
        generateProperties.setPk(generateProperties.getColumns().get(0));
    }
    // 当前时间
    generateProperties.setCurrentTime(DateUtil.now());
    return generateProperties;
}
Also used : GenerateProperties(com.hccake.ballcat.codegen.model.bo.GenerateProperties) ColumnProperties(com.hccake.ballcat.codegen.model.bo.ColumnProperties) IColumnType(com.hccake.ballcat.codegen.database.IColumnType) ArrayList(java.util.ArrayList) ColumnInfo(com.hccake.ballcat.codegen.model.bo.ColumnInfo) DbType(com.baomidou.mybatisplus.annotation.DbType) DbTypeConverter(com.hccake.ballcat.codegen.database.DbTypeConverter)

Aggregations

DbType (com.baomidou.mybatisplus.annotation.DbType)9 GlobalConfig (com.baomidou.mybatisplus.core.config.GlobalConfig)2 IKeyGenerator (com.baomidou.mybatisplus.core.incrementer.IKeyGenerator)2 ColumnInfo (com.hccake.ballcat.codegen.model.bo.ColumnInfo)2 DataSource (javax.sql.DataSource)2 Bean (org.springframework.context.annotation.Bean)2 DynamicRoutingDataSource (com.baomidou.dynamic.datasource.DynamicRoutingDataSource)1 TableNodesComplete (com.chao.cloud.common.extra.mybatis.plugin.TableNodesComplete)1 DbTypeConverter (com.hccake.ballcat.codegen.database.DbTypeConverter)1 IColumnType (com.hccake.ballcat.codegen.database.IColumnType)1 TableInfoMapper (com.hccake.ballcat.codegen.database.TableInfoMapper)1 ColumnProperties (com.hccake.ballcat.codegen.model.bo.ColumnProperties)1 GenerateProperties (com.hccake.ballcat.codegen.model.bo.GenerateProperties)1 TableDetails (com.hccake.ballcat.codegen.model.bo.TableDetails)1 TableInfo (com.hccake.ballcat.codegen.model.bo.TableInfo)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 SqlSessionFactory (org.apache.ibatis.session.SqlSessionFactory)1 ShardingDataSource (org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource)1