IfSqlNode是if标签的sql节点,提供解析if标签节点的功能。
package com.example.aninbatis.sqlnode;import com.example.aninbatis.sqlsource.DynamicContext;import com.example.aninbatis.utils.OgnlUtils;/*** if 标签的sql节点*/public class IfSqlNode implements SqlNode {/*** 布尔表达式*/private String test;/*** 子SqlNode集合*/private SqlNode rootSqlNode;public IfSqlNode(String test, SqlNode rootSqlNode) {this.test = test;this.rootSqlNode = rootSqlNode;}@Overridepublic void apply(DynamicContext context) {// 使用Ognl的api来对test标签属性中的布尔表达式进行处理,获取布尔值boolean evaluateBoolean = OgnlUtils.evaluateBoolean(test, context.getBindings().get("_parameter"));// 如果test标签属性中的表达式判断为true,才进行子节点的处理if (evaluateBoolean) {rootSqlNode.apply(context);}}}
