最近有个需求需要解析查询sql的where表达式,并为没有添加表别名字段加上别名。技术选用的是JSqlparser,查阅API后发现实现方式用的是访问者模式,实现源码如下
Expression where = ps.getWhere();
ExpressionVisitorAdapter expressionVisitor = new ExpressionVisitorAdapter(){
@Override
public void visit(Column column) {
if (column.getTable() == null) {
column.setTable(new Table("222"));
}
}
};
where.accept(expressionVisitor);