如何用jOOQ将SHOW VARIABLES查询结果转换为Map?
使用jOOQ执行MySQL/MariaDB的
SHOW VARIABLES并转换为Map<String, String> 在基于jOOQ的MySQL/MariaDB操作中,为了保持技术栈一致性,即便SHOW VARIABLES属于jOOQ未抽象的原生SQL,也不想切换到JDBC实现,而是希望用jOOQ完成查询并将返回的Variable_name和Value两列结果转换成Map<String, String>。
你当前已经找到一种可行的实现:
Field<String> key = field("Variable_name", String.class); Field<String> value = field("Value", String.class); Map<String, String> dbVars = create.fetch("SHOW VARIABLES").intoMap(key, value);
其实还有两种更简便的写法:
直接通过列名字符串调用
intoMap
不需要手动创建Field对象,intoMap方法支持直接传入列名,代码更紧凑:Map<String, String> dbVars = create.fetch("SHOW VARIABLES").intoMap("Variable_name", "Value");用jOOQ DSL风格的
fetchMap一步完成
借助DSL.sql包裹原生SQL,再用fetchMap直接指定key和value的类型,利用SHOW VARIABLES固定的列顺序完成转换:Map<String, String> dbVars = create.fetchMap(sql("SHOW VARIABLES"), String.class, String.class);
这两种写法都比你当前的实现更简洁,其中第一种直接传列名的方式最直观易读;第二种则更贴合jOOQ的API使用习惯。
内容的提问来源于stack exchange,提问作者helion3
相关产品推荐
相关产品推荐

