java的executor包有什么功能
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"java的executor包有什么功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java的executor包有什么功能"吧!sql语
千家信息网最后更新 2026年11月03日java的executor包有什么功能
本篇内容主要讲解"java的executor包有什么功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java的executor包有什么功能"吧!
sql语句中的参数赋值是有由executor包中的parameter子包完成的。
parameter子包其实只有一个parameterHandler接口,它定义了2个方法:
public interface ParameterHandler { Object getParameterObject(); void setParameters(PreparedStatement ps) throws SQLException;}ParameterHandler接口有一个默认的实现类DefaultParameterHandler,它在scripting包的子包中。
mybatis中支持进行参数设置的语句类型是PreparedStatement接口及其子接口CallableStatement, 所以setParameters的输入参数是PreparedStatement类型。
setParameters方法的实现逻辑就是依次取出每个参数的值,然后根据参数类型调用PreparedStatement中的赋值方法进行赋值。
public class DefaultParameterHandler implements ParameterHandler { // 类型处理器注册表 private final TypeHandlerRegistry typeHandlerRegistry; // MappedStatement对象(包含完整的增删改查节点信息) private final MappedStatement mappedStatement; // 参数对象 private final Object parameterObject; // BoundSql对象(包含SQL语句、参数、实参信息) private final BoundSql boundSql; // 配置信息 private final Configuration configuration; public DefaultParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql) { this.mappedStatement = mappedStatement; this.configuration = mappedStatement.getConfiguration(); this.typeHandlerRegistry = mappedStatement.getConfiguration().getTypeHandlerRegistry(); this.parameterObject = parameterObject; this.boundSql = boundSql; } @Override public Object getParameterObject() { return parameterObject; } /** * 为语句设置参数 * @param ps 语句 */ @Override public void setParameters(PreparedStatement ps) { ErrorContext.instance().activity("setting parameters").object(mappedStatement.getParameterMap().getId()); // 取出参数列表 List parameterMappings = boundSql.getParameterMappings(); if (parameterMappings != null) { for (int i = 0; i < parameterMappings.size(); i++) { ParameterMapping parameterMapping = parameterMappings.get(i); // ParameterMode.OUT是CallableStatement的输出参数,已经单独注册。故忽略 if (parameterMapping.getMode() != ParameterMode.OUT) { Object value; // 取出属性名称 String propertyName = parameterMapping.getProperty(); if (boundSql.hasAdditionalParameter(propertyName)) { // 从附加参数中读取属性值 value = boundSql.getAdditionalParameter(propertyName); } else if (parameterObject == null) { value = null; } else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) { // 参数对象是基本类型,则参数对象即为参数值 value = parameterObject; } else { // 参数对象是复杂类型,取出参数对象的该属性值 MetaObject metaObject = configuration.newMetaObject(parameterObject); value = metaObject.getValue(propertyName); } // 确定该参数的处理器 TypeHandler typeHandler = parameterMapping.getTypeHandler(); JdbcType jdbcType = parameterMapping.getJdbcType(); if (value == null && jdbcType == null) { jdbcType = configuration.getJdbcTypeForNull(); } try { // 此方法最终根据参数类型,调用java.sql.PreparedStatement类中的参数赋值方法,对SQL语句中的参数赋值 typeHandler.setParameter(ps, i + 1, value, jdbcType); } catch (TypeException | SQLException e) { throw new TypeException("Could not set parameters for mapping: " + parameterMapping + ". Cause: " + e, e); } } } } }} 到此,相信大家对"java的executor包有什么功能"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
参数
对象
类型
语句
方法
接口
功能
信息
属性
内容
处理器
处理
学习
复杂
实用
更深
兴趣
只有
名称
实用性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司简介
新华互联网科技学院
智能科技公司是互联网公司吗
互联网科技社
互联网 科技创新
上海喔噻互联网科技
丰台科技园 互联网
互联网科技小额贷款
大白互联网科技
科技与互联网哪个更好
深圳市优智互联网科技有限公司
科技大学互联网
互联网金融科技公司的优势
深圳无忧互联网科技
富国互联网金融科技混合基金
本届互联网大会上的黑科技
玉溪新华互联网科技怎么选
盐城市攀科互联网科技有限公司
互联网金融金融科技
长沙易易互联网科技有限公司
科技互联网企业
科技信息互联网
互联网科技未来
万易互联网科技有限公司
银优互联网科技有限公司
上海卓越科技 互联网
互联网科技生活的内容
重庆威客帮互联网科技
厦门比较好的科技互联网公司
互联网科技品牌