当前位置: 首页 > news >正文

网站开发程序有哪些常熟市维摩剑门绿茶网站建设目标

网站开发程序有哪些,常熟市维摩剑门绿茶网站建设目标,科普网站建设方案,该网站的域名为sql解析#xff0c;转换列表和表名 1、 jsqlparse介绍 JSqlParse是一款很精简的sql解析工具#xff0c;它可以将常用的sql文本解析成具有层级结构的“语法树”#xff0c;我们可以针对解析后的“树节点#xff08;也即官网里说的有层次结构的java类#xff09;”进行处理…sql解析转换列表和表名 1、 jsqlparse介绍 JSqlParse是一款很精简的sql解析工具它可以将常用的sql文本解析成具有层级结构的“语法树”我们可以针对解析后的“树节点也即官网里说的有层次结构的java类”进行处理进而生成符合我们要求的sql形式。 官网给的介绍很简洁JSqlParser 解析 SQL 语句并将其转换为 Java 类的层次结构。生成的层次结构可以使用访问者模式进行访问官网地址JSqlParser - Home。 2 pom坐标 dependencygroupIdcom.github.jsqlparser/groupIdartifactIdjsqlparser/artifactIdversion4.3/version /dependency3 解析工具类 private static String convertSql(String sql, Class? clazz) throws Exception {Select select (Select) CCJSqlParserUtil.parse(sql);SelectBody selectBody select.getSelectBody();if (selectBody instanceof PlainSelect) {PlainSelect plainSelect (PlainSelect) selectBody;Table table (Table) plainSelect.getFromItem();String originTableName table.getName().toLowerCase();Matcher matcher pattern.matcher(originTableName);//如果不符合原来的的表名格式就返回原sqlif (!matcher.find()) {return sql;}String day matcher.group().replace(_, -);long start 0;long end 10;//转换where条件Expression where plainSelect.getWhere();where.accept(new MyWhereExpressionVisitorAdapter());// 不管原来有没有时间条件,都拼接上当天的时间条件String condExpr where and time start and time end;Expression newCondition CCJSqlParserUtil.parseCondExpression(condExpr);plainSelect.setWhere(newCondition);//设置表名TableName annotation clazz.getAnnotation(TableName.class);table.setName(annotation.value());//转换select的列for (SelectItem selectItem : plainSelect.getSelectItems()) {SelectExpressionItem item (SelectExpressionItem) selectItem;item.accept(new MySelectExpressionVisitorAdapter(item, KEY_MAP.get(clazz)));}}//加时间排序return select order by time asc;}3 列名转换 public class MySelectExpressionVisitorAdapter extends ExpressionVisitorAdapter {private SelectExpressionItem item;private MapString, String columnMap;public MySelectExpressionVisitorAdapter(SelectExpressionItem item, MapString, String columnMap) {this.item item;this.columnMap columnMap;}Overridepublic void visit(Column column) {Expression expression item.getExpression();String originColumnName column.getColumnName();String changeColumnName columnMap.get(originColumnName.toUpperCase());if (changeColumnName ! null) {column.setColumnName(changeColumnName);//把原列名当做别名if (!originColumnName.equals(changeColumnName) expression instanceof Column item.getAlias() null) {item.setAlias(new Alias(originColumnName));}}}Overridepublic void visit(Function function) {String name function.getName();if (round.equalsIgnoreCase(name)) {function.getParameters().getExpressions().remove(1);function.setName();}super.visit(function);}4 条件转换 public class MyWhereExpressionVisitorAdapter extends ExpressionVisitorAdapter {Overrideprotected void visitBinaryExpression(BinaryExpression expression) {if (!(expression instanceof ComparisonOperator)) {super.visitBinaryExpression(expression);return;}Column column (Column) expression.getLeftExpression();String columnName column.getColumnName();if (isAgain.equalsIgnoreCase(columnName)) {column.setColumnName(isAgain);Expression rightExpression expression.getRightExpression();if (rightExpression instanceof LongValue) {LongValue tmp (LongValue) rightExpression;tmp.setStringValue(String.valueOf(tmp.getValue()0));}} else if (time.equalsIgnoreCase(columnName)) {column.setColumnName(time);changeTime((ComparisonOperator) expression);} else if (changeWhereSerialColumName(columnName)) {column.setColumnName(serialNum);}}/*** 转换时间条件列* param comparisonOperator*/private void changeTime(ComparisonOperator comparisonOperator) {Expression rightExpression comparisonOperator.getRightExpression();if (rightExpression instanceof StringValue) {long value DateTimeUtilJdk8.getTimeMilli(((StringValue) rightExpression).getValue());LongValue longValue new LongValue();longValue.setValue(value);comparisonOperator.setRightExpression(longValue);}}private boolean changeWhereSerialColumName(String column) {return LindormUtil.getOriginalSerialNumName().contains(column.toUpperCase());}测试 public static void main(String[] args) throws Exception {String sql select ID, username,password from Tbl_db_2023_06_26 where id007;System.out.println(convertSql(sql, Object.class));}
http://www.yutouwan.com/news/72428/

相关文章:

  • dede网站模板客有什么可以接单做设计的网站
  • 昆山做网站的个人福州建设网站设计
  • 重庆做网站 外包公司有哪些北京建设信源资讯有限公司
  • 怎么查看网站哪个公司做的wordpress做图片集
  • 企业形象网站怎么做做进口零食网站
  • 医院网站优化青岛市黄岛区建设局网站
  • 绑定云监控netsdk出错seo外包团队
  • 做网站怎样赚卖流量尚品宅配装修公司官网
  • 网站优化如何收费品牌建设 企业要
  • 做健身网站步骤是网站建设
  • 北京免费网站建设模板抖音代运营公司布马网络
  • 网站系统建设思想如何写绍兴大公司有哪些
  • wordpress网站检测咋样着做自己的网站
  • 不用fash做的视频网站如何做返利网站外推广
  • 如何建立网站站点中企动力福利待遇好吗
  • 查出网站的空间商网站建设十年经验
  • 有做阿里网站的吗网站建设维护培训
  • WordPress开发app福州seo网站推广优化
  • 微信网站怎么做的做视频网站成本
  • 网站排名不可有利就前wordpress 模板 淘宝客
  • 手机怎么创网站免费下载seo的优化技巧有哪些
  • 网站建设项目明细未来最吃香的十大行业2022
  • 给一个网站做需求分析vultr搭建wordpress
  • 动漫网站设计与实现产业互联网排名
  • 门户网站系统程序做网站要要多少钱
  • 东莞营销型手机网站建设怎样做网站分流赚钱
  • 北京知名网站建设潮州市网站建设公司
  • 做一元云购网站学编程在哪里学比较正规
  • 网站制作厦门使用代理服务器后看什么网站
  • 湖北省建设厅官方网站证书查询艺术品展览公司网站建设