package com.yqzx.generator.service; import cn.hutool.core.util.StrUtil; import com.yqzx.generator.config.DataSourceConfig; import com.yqzx.generator.action.model.DbColumnType; import com.yqzx.generator.action.model.Table; import com.yqzx.generator.action.model.TableInfo; import com.yqzx.generator.action.model.Template; import lombok.extern.slf4j.Slf4j; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; /** * @description: 表工具类 * @author: chaoyapeng * @time: 2020/8/18 16:13 */ @Slf4j public class GeneratorService { private DataSourceConfig dataSourceConfig; public GeneratorService setDataSourceConfig(DataSourceConfig dataSourceConfig) { this.dataSourceConfig = dataSourceConfig; return this; } public GeneratorService setDataSourceConfig(String driverName, String username, String password, String url) { DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDriverName(driverName); dataSourceConfig.setUsername(username); dataSourceConfig.setPassword(password); dataSourceConfig.setUrl(url); this.dataSourceConfig = dataSourceConfig; return this; } /** * 查询数据库表信息 * * @param schema * @return */ public List getTable(String schema) { { // 获取数据库连接,查询表结构信息 Connection conn = dataSourceConfig.getConn(); Statement sm = null; List
tables = new ArrayList<>(); try { sm = conn.createStatement(); StringBuffer sql = new StringBuffer(); sql.append("select table_name as tablename,table_comment as tablecomment from information_schema.`tables` where table_schema = '"); sql.append(schema); sql.append("'"); /*String sql = "select table_name as tablename,table_comment as tablecomment from information_schema.`tables` where table_schema = '" + schema + "'";*/ ResultSet rs = sm.executeQuery(sql.toString()); while (rs.next()) { Table table = new Table(); table.setName(rs.getString(1)); table.setComment(rs.getString(2)); table.setLabel(table.getName() + "-" + table.getComment()); tables.add(table); } } catch (SQLException e) { log.error(e.getMessage()); } if (sm != null) { try { sm.close(); } catch (SQLException e) { log.error(e.getMessage()); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { log.error(e.getMessage()); } } return tables; } } /** * 查询表结构信息 * * @param tableName * @return */ public List getTableInfo(String tableName) { Connection conn = dataSourceConfig.getConn(); Statement sm = null; List tableInfos = new ArrayList<>(); try { sm = conn.createStatement(); StringBuffer sql = new StringBuffer(); sql.append("select column_name, data_type, column_comment from information_schema.columns where table_schema = (select database()) and table_name = '"); sql.append(tableName); sql.append("'"); /*String sql = "select column_name, data_type, column_comment from information_schema.columns where table_schema = (select database()) and table_name = '" + tableName + "'";*/ ResultSet rs = sm.executeQuery(sql.toString()); while (rs.next()) { TableInfo tableInfo = new TableInfo(); tableInfo.setName(rs.getString(1)); DbColumnType column = DbColumnType.get(rs.getString(2)); tableInfo.setType(column.getType()); tableInfo.setJdbcType(column.getJdbcType()); tableInfo.setComment(rs.getString(3)); tableInfo.setPropertyName(StrUtil.toCamelCase(tableInfo.getName())); tableInfos.add(tableInfo); } if (tableInfos.size() > 0) { TableInfo t = tableInfos.get(tableInfos.size() - 1); tableInfos.remove(tableInfos.size() - 1); t.setLast(true); tableInfos.add(t); } } catch (SQLException e) { log.error(e.getMessage()); } if (sm != null) { try { sm.close(); } catch (SQLException e) { log.error(e.getMessage()); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { log.error(e.getMessage()); } } return tableInfos; } /** * 获取模板内容 * * @return */ public List