Class NutSqlTpl

java.lang.Object
org.nutz.dao.impl.sql.NutStatement
org.nutz.dao.impl.sql.NutSql
tech.riemann.nif.nutz.dao.sqltpl.NutSqlTpl
All Implemented Interfaces:
Serializable, org.nutz.dao.sql.DaoStatement, org.nutz.dao.sql.Sql
Direct Known Subclasses:
BeetlSqlTpl, FreeMarkerSqlTpl

public abstract class NutSqlTpl extends org.nutz.dao.impl.sql.NutSql
NutSqlTpl是一个抽象模板类,继承自NutSql,用于处理SQL模板渲染 该类确保在获取SQL相关信息前必须完成渲染操作
Author:
Kerbores(kerbores@gmail.com)
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
    标识渲染是否完成的标志位

    Fields inherited from class org.nutz.dao.impl.sql.NutSql

    callback, customValueAdaptor, items, paramIndex, params, placeholder, rows, sourceSql, varIndex, vars

    Fields inherited from class org.nutz.dao.impl.sql.NutStatement

    expert
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    NutSqlTpl(String source)
    构造函数,使用指定的SQL源创建NutSqlTpl实例
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    检查渲染状态,如果未完成渲染则执行渲染操作
    org.nutz.dao.jdbc.ValueAdaptor[]
    获取值适配器数组,在获取之前会检查并执行渲染操作
    Object[][]
    获取参数矩阵,在获取之前会检查并执行渲染操作
    protected abstract void
    抽象渲染方法,由子类实现具体的渲染逻辑
    转换为预处理SQL语句,在转换之前会检查并执行渲染操作

    Methods inherited from class org.nutz.dao.impl.sql.NutSql

    _params_count, addBatch, appendSourceSql, changePlaceholder, clearBatch, duplicate, getOutParams, getSourceSql, literal, onAfter, onBefore, paramIndex, params, setCallback, setCondition, setEntity, setPager, setParam, setParams, setSourceSql, setValueAdaptor, setVar, setVars, varIndex, vars

    Methods inherited from class org.nutz.dao.impl.sql.NutStatement

    forceExecQuery, forPrint, getAdapterBy, getBoolean, getContext, getDouble, getDouble, getEntity, getFloat, getFloat, getInt, getInt, getList, getLong, getLong, getNumber, getObject, getResult, getSqlType, getString, getUpdateCount, isAlter, isCall, isCreate, isDelete, isDrop, isExec, isForceExecQuery, isInsert, isOther, isRun, isSelect, isUpdate, param2String, setContext, setExpert, setQueryTimeout, setSqlType, toExampleStatement, toStatement, toString

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.nutz.dao.sql.DaoStatement

    forceExecQuery, forPrint, getBoolean, getContext, getDouble, getDouble, getEntity, getFloat, getFloat, getInt, getInt, getList, getLong, getLong, getNumber, getObject, getResult, getSqlType, getString, getUpdateCount, isAlter, isCall, isCreate, isDelete, isDrop, isExec, isForceExecQuery, isInsert, isOther, isRun, isSelect, isUpdate, setExpert, setQueryTimeout, toString
  • Field Details

    • renderComplete

      protected volatile boolean renderComplete
      标识渲染是否完成的标志位

      低级: volatile——防多线程复用一个 Sql 实例时 checkRender 竞态(重复渲染或漏渲染)

  • Constructor Details

    • NutSqlTpl

      protected NutSqlTpl(String source)
      构造函数,使用指定的SQL源创建NutSqlTpl实例
      Parameters:
      source - SQL源字符串
  • Method Details

    • getAdaptors

      public org.nutz.dao.jdbc.ValueAdaptor[] getAdaptors()
      获取值适配器数组,在获取之前会检查并执行渲染操作
      Specified by:
      getAdaptors in interface org.nutz.dao.sql.DaoStatement
      Overrides:
      getAdaptors in class org.nutz.dao.impl.sql.NutSql
      Returns:
      值适配器数组
    • toPreparedStatement

      public String toPreparedStatement()
      转换为预处理SQL语句,在转换之前会检查并执行渲染操作
      Specified by:
      toPreparedStatement in interface org.nutz.dao.sql.DaoStatement
      Overrides:
      toPreparedStatement in class org.nutz.dao.impl.sql.NutSql
      Returns:
      预处理SQL语句字符串
    • getParamMatrix

      public Object[][] getParamMatrix()
      获取参数矩阵,在获取之前会检查并执行渲染操作
      Specified by:
      getParamMatrix in interface org.nutz.dao.sql.DaoStatement
      Overrides:
      getParamMatrix in class org.nutz.dao.impl.sql.NutSql
      Returns:
      参数矩阵对象数组
    • checkRender

      protected void checkRender()
      检查渲染状态,如果未完成渲染则执行渲染操作
    • render

      protected abstract void render()
      抽象渲染方法,由子类实现具体的渲染逻辑