RawSqlSource封装非动态的SqlNode信息(也就是不带有${}或者动态sql标签的sqlNode)。

    1. package com.example.aninbatis.sqlsource;
    2. import com.example.aninbatis.sqlnode.SqlNode;
    3. /**
    4. * 该SqlSource主要是封装非动态的SqlNode信息(也就是不带有${}或者动态sql标签的sqlNode)
    5. */
    6. public class RawSqlSource implements SqlSource {
    7. private SqlSource sqlSource;
    8. public RawSqlSource(SqlNode rootSqlNode) {
    9. DynamicContext context = new DynamicContext(null);
    10. rootSqlNode.apply(context);
    11. // 在这里要先对sql节点进行解析
    12. SqlSourceParser sqlSourceParser = new SqlSourceParser();
    13. sqlSource = sqlSourceParser.parse(context.getSql());
    14. }
    15. @Override
    16. public BoundSql getBoundSql(Object param) {
    17. // 从staticSqlSource中获取相应信息
    18. return sqlSource.getBoundSql(param);
    19. }
    20. }