package com.dsideal.base.Test; import com.dsideal.base.Plugin.YamlProp; import com.jfinal.kit.Kv; import com.jfinal.kit.Prop; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.SqlPara; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.hikaricp.HikariCpPlugin; import com.jfinal.plugin.activerecord.Record; import java.io.File; import java.util.ArrayList; import java.util.List; public class TestDataSet { /** * 获取数据集的表名 * * @param dataset_group_id 数据集的id * @return 表名 */ public static String getTableName(long dataset_group_id) { Kv kv = Kv.by("dataset_group_id", dataset_group_id); SqlPara sqlPara = Db.getSqlPara("DataEase.getTableName", kv); return Db.findFirst(sqlPara).getStr("table_name"); } /** * 获取表字段信息 * @param table_name 表名 * @return 表的信息 */ public static List getColumns(String table_name) { String sql = "desc `"+table_name+"`"; return Db.find(sql); } public static void main(String[] args) { //加载配置文件 String configFile = "application_dataease.yaml"; Prop PropKit = new YamlProp(configFile); HikariCpPlugin arpPlugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); arpPlugin.start(); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin("master", arpPlugin); arp.setDialect(new MysqlDialect()); //遍历sql目录下所有的sql文件 File sqlDir; String basePath = TestDataSet.class.getResource("/").getPath(); sqlDir = new File(basePath + "/Sql"); File[] sqlFiles = sqlDir.listFiles(); for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) { //只加载.sql文件 if (sqlFile.getName().indexOf(".sql") > 0) { arp.addSqlTemplate("/Sql/" + sqlFile.getName()); } } arp.start(); //1、获取树根 SqlPara sqlPara = Db.getSqlPara("DataEase.getTreeRoot"); Record rRoot = Db.findFirst(sqlPara); long rootId = rRoot.getLong("id"); //2、查询有哪些数据集 Kv kv = Kv.by("id", rootId); kv.set("dataset", true); sqlPara = Db.getSqlPara("DataEase.getAllDataSet", kv); List list = Db.find(sqlPara); for (Record record : list) { long id = record.getLong("id"); //数据集名称 String dataset_name = record.getStr("name"); //对应的表名 String table_name = getTableName(id); //表的信息 List columns = getColumns(table_name); System.out.println(dataset_name + " " + table_name); List cols=new ArrayList<>(); for (Record column : columns) { cols.add(column.getStr("Field")); } System.out.println(cols); } } }