测试

58 阅读2分钟

测试

@Slf4j
public class MyBatisPlusGenerator {
    static String dbName= "order_center";
    static String packageParentName = "com.chinared.api.order";


    //这里传入表名  用,分割  如果不传则默认遍历整个库
    static StringBuilder tableName = new StringBuilder("xb_order_service_multiple");




    //设置数据库相关配置
    public static DataSourceConfig dataSource = new DataSourceConfig()
            .setDriverName("com.mysql.cj.jdbc.Driver")
            .setUrl("jdbc:mysql://192.168.0.200:3306/"+dbName+"?characterEncoding=utf8&useInformationSchema=true")
            .setUsername("root")
            .setPassword("123456");
    @SneakyThrows
    public static void main(String[] args) {
        //1.获取代码生成器的对象
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setDataSource(dataSource);
        //创建链接
        Connection connection = DriverManager.getConnection(dataSource.getUrl(),dataSource.getUsername(), dataSource.getPassword());
        List<String> tables = new ArrayList<>();
        String query = "select table_name From information_schema.tables where table_schema = "+"'"+dbName+"'";
        Statement statement = connection.createStatement();
        //执行查询数据库所有表名的SQL
        ResultSet resultSet = statement.executeQuery(query);

        while (resultSet.next()){
            String tableName = resultSet.getString("table_name");
            tables.add(tableName);
        }

        //设置全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setServiceName("%sService");
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/xb-parent/chinared-business");    //设置代码生成位置
        globalConfig.setOpen(false);    //设置生成完毕后是否打开生成代码所在的目录
        globalConfig.setAuthor("zevin");    //设置作者
        globalConfig.setFileOverride(true);     //设置是否覆盖原始生成的文件
        globalConfig.setMapperName("%sMapper");    //设置数据层接口名,%s为占位符,指代模块名称
        globalConfig.setIdType(IdType.AUTO);   //设置Id生成策略
        globalConfig.setSwagger2(true);
        autoGenerator.setGlobalConfig(globalConfig);

        //设置包名相关配置
        PackageConfig packageInfo = new PackageConfig();
        packageInfo.setParent(packageParentName);   //设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
        packageInfo.setEntity("entity");    //设置实体类包名
        packageInfo.setXml("mapper");
        packageInfo.setMapper("dao");   //设置数据层包名
        autoGenerator.setPackageInfo(packageInfo);

        //策略设置
        StrategyConfig strategyConfig = new StrategyConfig();

        strategyConfig.setNameConvert(new INameConvert() {
            @Override
            public String entityNameConvert(TableInfo tableInfo) {
                log.info("tableInfo:{}-getName",tableInfo.getName());
                log.info("tableInfo:{}-getEntityName",tableInfo.getEntityName());
                log.info("tableInfo:{}-getFieldNames",tableInfo.getFieldNames());
                log.info("tableInfo:{}-getControllerName",tableInfo.getControllerName());
                String tableName = StrUtil.toCamelCase(tableInfo.getName());
                if (tableName.contains("xb")){
                    tableName = tableName.substring(2,tableName.length());
                }else if (tableInfo.getName().contains("t_")||tableInfo.getName().contains("c_")){
                    tableName = tableName.substring(1,tableName.length());
                }
                return tableName;
            }
            @Override
            public String propertyNameConvert(TableField field) {
                log.info("field:{}-getName",field.getName());
                log.info("field:{}-getColumnName",field.getColumnName());
                log.info("field:{}-getAnnotationColumnName",field.getAnnotationColumnName());
                return StrUtil.toCamelCase(field.getName());
            }
        });

        String[] include = tables.toArray(new String[tables.size()]);
        if (StringUtils.isNotBlank(tableName)){
            include=tableName.toString().split(",");
        }
        //传入所有表名
        strategyConfig.setInclude(include);  //设置当前参与生成的表名,参数为可变参数
        strategyConfig.setTablePrefix("tbl_");  //设置数据库表的前缀名称,模块名 = 数据库表名 - 前缀名  例如: User = tbl_user - tbl_
        strategyConfig.setRestControllerStyle(true);    //设置是否启用Rest风格
        strategyConfig.setVersionFieldName("version");  //设置乐观锁字段名
        strategyConfig.setLogicDeleteFieldName("deleted");  //设置逻辑删除字段名
        strategyConfig.setEntityLombokModel(true);  //设置是否启用lombok
        autoGenerator.setStrategy(strategyConfig);
        //2.执行生成操作
        autoGenerator.execute();

    }
}