src/org/nutz/dao/impl/sql/SqlTemplate.java
public <T> T queryForObject(String sql,
                                Map<String, Object> vars,
                                Map<String, Object> params,
                                Class<T> classOfT) {
        Sql sqlObj = createSqlObj(sql, params);
        sqlObj.setCallback(new SqlCallback() {
            public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
                if (null != rs && rs.next())
                    return rs.getObject(1);
                return null;
            }
        });

        execute(sqlObj, vars, params);
        return sqlObj.getObject(classOfT);
    }
public <T> T queryForObject(String sql,
                                Map<String, Object> vars,
                                Map<String, Object> params,
                                Class<T> classOfT) {
        Sql sqlObj = createSqlObj(sql, params);
        sqlObj.setCallback(new SqlCallback() {
            public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
                if (null != rs && rs.next())
                    return rs.getObject(1);
                return null;
            }
        });

        execute(sqlObj, vars, params);
        return sqlObj.getObject(classOfT);
    }
public < T > T queryForObject ( String sql , Map < String , Object > vars , Map < String , Object > params , Class < T > classOfT ) { Sql sqlObj = createSqlObj ( sql , params ) ; sqlObj . setCallback ( new SqlCallback ( ) { public Object invoke ( Connection conn , ResultSet rs , Sql sql ) throws SQLException { if ( null != rs && rs . next ( ) ) return rs . getObject ( 1 ) ; return null ; } } ) ; execute ( sqlObj , vars , params ) ; return sqlObj . getObject ( classOfT ) ; }
执行一个SQL查询操作，结果为给定对象类型的对象，适用于明确SQL查询结果的类型。

@param sql
包含变量占位符的SQL
@param vars
变量map，无参数时，可为null
@param params
参数map，无参数时，可为null
@param classOfT
对象类型，SQL查询结果所对应的类型，如Date.class等

@return 对象，无查询结果时返回null
执行一个SQL查询操作，结果为给定对象类型的对象，适用于明确SQL查询结果的类型。