获取数据库表的 MetaData:
java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
import org.springframework.jdbc.core.ConnectionCallback; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.*; @Service public class DynamicMetadataService { private final JdbcTemplate jdbcTemplate; public DynamicMetadataService(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } /** * 获取表的元数据信息 * * @param tableName 数据库表名 * @return 表的元数据信息 */ public List<Map<String, Object>> getTableMetadata(String tableName) { return jdbcTemplate.execute((ConnectionCallback<List<Map<String, Object>>>) conn -> { DatabaseMetaData metaData = conn.getMetaData(); try (ResultSet columns = metaData.getColumns( conn.getCatalog(), conn.getSchema(), tableName, "%" )) { return extractColumnMetadata(columns); } }); } private List<Map<String, Object>> extractColumnMetadata(ResultSet columns) throws SQLException { List<Map<String, Object>> metadataList = new ArrayList<>(); ResultSetMetaData rsMeta = columns.getMetaData(); int columnCount = rsMeta.getColumnCount(); Map<String, String> columnNameMap = new HashMap<>(); for (int i = 0; i < columnCount; i++) { columnNameMap.put(rsMeta.getColumnName(i).toLowerCase(), rsMeta.getColumnLabel(i)); } while (columns.next()) { Map<String, Object> columnInfo = new LinkedHashMap<>(); // 添加所有可用元数据 for (Map.Entry<String, String> entry : columnNameMap.entrySet()) { String colName = entry.getKey(); String displayName = entry.getValue(); columnInfo.put(displayName, columns.getObject(colName)); } metadataList.add(columnInfo); } return metadataList; } }
Oracle 查询某个表的字段及其属性:
sql1 2 3 4 5 6 7 8 9 10 11 12
SELECT column_id AS "列序号", column_name AS "字段名", data_type AS "数据类型", data_length AS "长度", data_precision AS "精度(数字类型)", data_scale AS "小数位数", nullable AS "是否允许为空", data_default AS "默认值" FROM user_tab_columns WHERE table_name = 'YOUR_TABLE_NAME' ORDER BY column_id;
黑猴火出了圈,发现有一些人刚发售就全成就了。因此了解到了一款软件 Steam++ (已更名为 Watt Toolkit),而且这还是一个开源项目。
BeyondDimension/SteamTools软件内置了部分网络加速,而且是免费的,还是蛮有用的,特此记录。
::-webkit-scrollbar
CSS 伪类元素会影响设置了overflow:scroll
; 的元素的滚动条样式。::-webkit-scrollbar
仅在基于 Blink 或 WebKit 的浏览器 (例如,Chrome、Edge、Opera、Safari、iOS 上所有的浏览器,以及其他基于 WebKit 的浏览器) 上可用。滚动条样式的标准方法可用于 scrollbar-color 和 scrollbar-width。CSS 滚动条选择器 你可以使用以下伪元素选择器去修改基于 webkit 的浏览器的滚动条样式:
::-webkit-scrollbar
:整个滚动条。::-webkit-scrollbar-button
:滚动条上的按钮(上下箭头)。::-webkit-scrollbar-thumb
:滚动条上的滚动滑块。::-webkit-scrollbar-track
:滚动条轨道。::-webkit-scrollbar-track-piece
:滚动条没有滑块的轨道部分。::-webkit-scrollbar-corner
:当同时有垂直滚动条和水平滚动条时交汇的部分。通常是浏览器窗口的右下角。::-webkit-resizer
:出现在某些元素底角的可拖动调整大小的滑块。
Maven 镜像仓库(阿里云):
text1
https://maven.aliyun.com/repository/public
gradle plugin 镜像仓库(阿里云):
text1
https://maven.aliyun.com/repository/gradle-plugin
配置指南:阿里云云效 Maven
广告屏蔽大师 Plus+ 订阅链接:
text1 2 3 4 5
// ad-pc.txt:[推荐桌面端]合并自乘风视频广告过滤规则、Easylist、EasylistChina、EasyPrivacy、CJX'sAnnoyance,以及补充的一些规则; https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad.txt // ad.txt:【推荐】合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX'sAnnoyance,以及补充的一些规则; https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad-pc.txt