SqlParameterSource缺省实现,用于进行参数处理的类。

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import com.huawei.widget.commons.dao.DBException;
import com.huawei.widget.commons.dao.ResultSetHandler;
import com.huawei.widget.commons.dao.SqlParameterSource;

/**
 * SqlParameterSource缺省实现,用于进行参数处理的类。
 *
 * @author g00106664
 * @version C02 2009-4-27
 * @since OpenEye WIDGET_SRV V100R001C02
 */
public class SqlParameterSourceDefault implements SqlParameterSource
{
    /**
     * 用于存储参数。
     */
    private Map<String, SqlParameter> params = new HashMap<String, SqlParameter>();

    /**
     * 游标处理的字段名。
     */
    private String handerName = null;

    /**
     * 此方法用于获取所有的参数集合。
     *
     * @return the sql parameters
     */
    public Collection<SqlParameter> getSqlParameters()
    {
        return params.values();
    }

    /**
     * Adds the sql parameter.
     *
     * @param param
     *            the param
     * @return the sql parameter source
     * @see SqlParameterSource#addSqlParameter(SqlParameter)
     * @since 2008-5-28
     */
    private SqlParameterSource addSqlParameter(SqlParameter param)
    {
        params.put(param.getName(), param);
        return this;
    }

    /**
     * Adds the sql parameter.
     *
     * @param name
     *            名称。
     * @param type
     *            类型。
     * @param value
     *            the value
     * @return the sql parameter source
     * @since 2008-5-28
     */
    public SqlParameterSource addSqlParameter(String name, int type,
            Object value)
    {
        return addSqlParameter(new SqlParameterDefault(name, type, value));
    }

    /**
     * 此方法用于增加流标处理。
     *
     * @param name
     *            of type String
     * @param handler
     *            of type ResultSetHandler
     * @return SqlParameterSource
     */
    public SqlParameterSource addCursorHandler(String name,
            ResultSetHandler handler)
    {
        if (handerName == null || name.equals(handerName))
        {
            handerName = name;
            return addSqlParameter(new SqlParameterDefault(name, handler));
        }
        else
        {
            throw new DBException(
                    "one SqlParameter just allow one cursor handler");
        }
    }

    /**
     * 此方法用于增加OUT参数。
     *
     * @param name
     *            of type String
     * @param type
     *            数据类型。
     * @return SqlParameterSource
     */
    public SqlParameterSource addOutParameter(String name, int type)
    {
        return addSqlParameter(new SqlParameterDefault(name, type,
                PARAM_TYPE_OUT));
    }

    /**
     * 此方法用于增加IN/OUT参数。
     *
     * @param name
     *            of type String
     * @param type
     *            of type int
     * @param value
     *            of type Object
     * @return SqlParameterSource
     */
    public SqlParameterSource addInOutParameter(String name, int type,
            Object value)
    {
        return addSqlParameter(new SqlParameterDefault(name, type, value,
                PARAM_TYPE_INOUT));
    }

    /**
     * 此方法用于根据键值获取参数。
     *
     * @param key
     *            键值。
     * @return SqlParameter
     */
    public SqlParameter getSqlParameter(String key)
    {
        return params.get(key);
    }

    /**
     * 此方法用于SqlParameter缺省实现。
     */
    private static class SqlParameterDefault implements SqlParameter
    {
        /**
         * 名称。
         */
        private String name;

        /**
         * 类型。
         */
        private int type;

        /**
         * 值对象
         */
        private Object value = null;

        /**
         * 游标处理器。
         */
        private ResultSetHandler handler = null;

        /**
         * 参数类型。
         */
        private int paramType = 0;

        /**
         * 初始化
         *
         * @param name
         *            名称。
         * @param type
         *            参数类型。
         * @param value
         *            值。
         */
        public SqlParameterDefault(String name, int type, Object value)
        {
            this.name = name;
            this.type = type;
            this.value = value;
        }

        /**
         * 初始化
         *
         * @param name
         *            名称。
         * @param type
         *            数据类型。
         * @param paramType
         *            参数类型(输入、输出、输出/输入)。
         */
        public SqlParameterDefault(String name, int type, int paramType)
        {
            this.name = name;
            this.type = type;
            this.paramType = paramType;
        }

        /**
         * 初始化
         *
         * @param name
         *            名称。
         * @param type
         *            类型。
         * @param value
         *            值。
         * @param paramType
         *            参数类型(输入、输出、输出/输入)。
         */
        public SqlParameterDefault(String name, int type, Object value,
                int paramType)
        {
            this.name = name;
            this.type = type;
            this.value = value;
            this.paramType = paramType;
        }

        /**
         * 初始化
         *
         * @param name
         *            名称。
         * @param handler
         *            ResultRset处理接口,主要用于游标处理。
         */
        public SqlParameterDefault(String name, ResultSetHandler handler)
        {
            this.name = name;
            this.type = CURSOR;
            this.handler = handler;
            this.paramType = PARAM_TYPE_OUT;
        }

        /**
         * Method getName returns the name of this SqlParameter object.
         *
         * @return the name (type String) of this SqlParameter object.
         */
        public String getName()
        {
            return name;
        }

        /**
         * Sets the name.
         *
         * @param name
         *            the new name
         */
        public void setName(String name)
        {
            this.name = name;
        }

        /**
         * Method getType returns the type of this SqlParameter object.
         *
         * @return the type (type int) of this SqlParameter object.
         */
        public int getType()
        {
            return type;
        }

        /**
         * Sets the type.
         *
         * @param type
         *            the new type
         */
        public void setType(int type)
        {
            this.type = type;
        }

        /**
         * Method getValue returns the value of this SqlParameter object.
         *
         * @return the value (type Object) of this SqlParameter object.
         */
        public Object getValue()
        {
            return value;
        }

        /**
         * Sets the value.
         *
         * @param value
         *            the new value
         */
        public void setValue(Object value)
        {
            this.value = value;
        }

        /**
         * Method getParamType returns the paramType of this SqlParameter
         * object.
         *
         * @return the paramType (type int) of this SqlParameter object.
         */
        public int getParamType()
        {
            return paramType;
        }

        /**
         * Method getHandler returns the handler of this SqlParameter object.
         *
         * @return the handler (type ResultSetHandler) of this SqlParameter
         *         object.
         */
        public ResultSetHandler getHandler()
        {
            return handler;
        }

        /**
         * Sets the handler. 主要用于游标处理
         *
         * @param handler
         *            the new handler
         */
        public void setHandler(ResultSetHandler handler)
        {
            this.handler = handler;
        }

        /*
         * (非 Javadoc)
         *
         * @see java.lang.Object#toString()
         */
        public String toString()
        {
            final StringBuilder sb = new StringBuilder();
            sb.append("SqlParameterSourceDefault");
            sb.append("{name='").append(name).append('/'');
            sb.append(", type=").append(type);
            sb.append(", value=").append(value);
            sb.append(", handler=").append(handler);
            sb.append(", paramType=").append(paramType);
            sb.append('}');
            return sb.toString();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值