使用druid 版本1.0.29
比如我有建表语句
-- table-name-bean-name:some -- CREATE TABLE some_table
( id
bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键' }
我想通过druid的SQLUtils获取 table-name-bean-name:some 注释 目的为了做代码生成(表名对应java bean名称),但是无法获取该表注释,不知道什么方式可以获取
原提问者GitHub用户wyzssw
如果您在使用Druid的SQLUtils时无法解析出建表语句中的注释,可能是因为您使用的Druid版本较旧。Druid在旧版本中可能存在一些问题或限制,导致无法正确解析注释。
建议您尝试更新到最新版本的Druid,例如1.1.14版本。您可以通过访问Druid的GitHub页面(https://github.com/alibaba/druid/releases)查找最新的发布版本,并下载相应的jar包进行更新。
在使用新版本的Druid时,您可以尝试以下方法来获取建表语句中的注释:
1. 使用SQLUtils.parseStatements
方法解析建表语句,并遍历返回的List<SQLStatement>
列表。 2. 对于每个SQLStatement
对象,您可以使用SQLStatement.getComment()
方法获取其注释信息。例如:
java List<SQLStatement> stmtList = SQLUtils.parseStatements(createTableSql, dbType); for (SQLStatement stmt : stmtList) { String comment = stmt.getComment(); // 处理注释信息 }
请注意,以上代码示例中的createTableSql
是您的建表语句字符串,dbType
是数据库类型(如MySQL、Oracle等),您需要根据实际情况做相应的调整。
果您在使用建表语句时,注释无法解析出来,可能是因为您使用的数据库版本不支持注释或者您的建表语句中注释的语法不正确。以下是一些可能的解决方案:
确认数据库版本支持注释。不同的数据库版本对注释的支持程度不同。如果您使用的数据库版本不支持注释,可能会导致注释无法解析出来。请确保您使用的数据库版本支持注释。
检查注释的语法。建表语句中的注释应该使用正确的语法。不同的数据库使用的注释语法可能会有所不同。例如,MySQL数据库中的注释语法是"--",而Oracle数据库中的注释语法是"/ /"。请检查您的建表语句中注释的语法是否正确。
尝试使用其他的注释方式。如果您的建表语句中的注释无法解析出来,可以尝试使用其他的注释方式,例如在建表语句中添加表格注释或者列注释。这些注释方式可以在大多数数据库中被解析出来。
如果你使用的是Druid连接池的其他版本,可能需要使用不同的参数来获取SQL语句中的注释信息。因此,建议你在使用Druid连接池之前,先仔细阅读Druid连接池的文档
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。