Hibernate格式化SQL源码分析

Spring Boot 中使用 H2 数据库:https://blog.csdn.net/qq_40794973/article/details/106354143 

https://www.runoob.com/w3cnote/java-stringtokenizer-intro.html 

  • org.hibernate.engine.jdbc.spi.SqlStatementLogger#logStatement(java.lang.String, org.hibernate.engine.jdbc.internal.Formatter)
  • org.hibernate.engine.jdbc.internal.StatementPreparerImpl.StatementPreparationTemplate#prepareStatement

 

public class StringHelper {
    public static final String WHITESPACE = " \n\r\f\t";
}
public interface Formatter {
    String format(String source);
}
import java.util.*;
public class BasicFormatterImpl implements Formatter {
    private static final Set<String> BEGIN_CLAUSES = new HashSet<>();
    private static final Set<String> END_CLAUSES = new HashSet<>();
    private static final Set<String> LOGICAL = new HashSet<>();
    private static final Set<String> QUANTIFIERS = new HashSet<>();
    private static final Set<String> DML = new HashSet<>();
    private static final Set<String> MISC = new HashSet<>();
    static {
        BEGIN_CLAUSES.add("left");
        BEGIN_CLAUSES.add("right");
        BEGIN_CLAUSES.add("inner");
        BEGIN_CLAUSES.add("outer");
        BEGIN_CLAUSES.add("group");
        BEGIN_CLAUSES.add("order");
 
        END_CLAUSES.add("where");
        END_CLAUSES.add("set");
        END_CLAUSES.add("having");
        END_CLAUSES.add("join");
        END_CLAUSES.add("from");
        END_CLAUSES.add("by");
        END_CLAUSES.add("into");
        END_CLAUSES.add("union");
 
        LOGICAL.add("and");
        LOGICAL.add("or");
        LOGICAL.add("when");
        LOGICAL.add("else");
        LOGICAL.add("end");
 
        QUANTIFIERS.add("in");
        QUANTIFIERS.add("all");
        QUANTIFIERS.add("exists");
        QUANTIFIERS.add("some");
        QUANTIFIERS.add("any");
 
        DML.add("insert");
        DML.add("update");
        DML.add("delete");
 
        MISC.add("select");
        MISC.add("on");
    }
    pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值