源码
表结构
代码的目录结构
后端代码
前端代码
查询数据库的表
前端
后端
- 只查询
当前数据库
的表去除掉
定时任务和生成器
的表格去除掉
已经导入的表格
<select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">select table_name, table_comment, create_time, update_time from information_schema.tableswhere table_schema = (select database()) <!-- 查询当前数据库中的表 -->AND table_name NOT LIKE 'qrtz_%' <!-- 排除表名以 'qrtz_' 开头的表 -->AND table_name NOT LIKE 'gen_%' <!-- 排除表名以 'gen_' 开头的表 -->AND table_name NOT IN (select table_name from gen_table) <!-- 排除已经在 gen_table 表中的表 --><if test="tableName != null and tableName != ''">AND lower(table_name) like lower(concat('%', #{tableName}, '%')) <!-- 如果 tableName 不为空,按表名模糊查询 --></if><if test="tableComment != null and tableComment != ''">AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) <!-- 如果 tableComment 不为空,按表注释模糊查询 --></if><if test="params.beginTime != null and params.beginTime != ''"><!-- 如果 beginTime 不为空,按创建时间起始时间查询 -->AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')</if><if test="params.endTime != null and params.endTime != ''"><!-- 如果 endTime 不为空,按创建时间结束时间查询 -->AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')</if>order by create_time desc <!-- 按创建时间降序排列 -->
</select>
导入表结构
流程
前端
对选中的表进行处理
导入表的后端接口
后端
controller
mapper层
导入表结构的 数据库代码
- 循环遍历 前端传入的数据
- 存储表的信息
- 存储列的信息
for (GenTable table : tableList){String tableName = table.getTableName();// 初始化表信息GenUtils.initTable(table, operName);// 插入表信息int row = genTableMapper.insertGenTable(table);if (row > 0){// 保存列信息List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);for (GenTableColumn column : genTableColumns){GenUtils.initColumnField(column, table);genTableColumnMapper.insertGenTableColumn(column);}}}
获取
列信息
的mapper
<select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult"><!-- 选择列的详细信息 -->select column_name,<!-- 判断列是否为必需(不可为空且不是主键) -->(case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else '0' end) as is_required,<!-- 判断列是否为主键 -->(case when column_key = 'PRI' then '1' else '0' end) as is_pk,<!-- 获取列的序号位置 -->ordinal_position as sort,<!-- 获取列的注释 -->column_comment,<!-- 判断列是否为自动递增 -->(case when extra = 'auto_increment' then