java的executor包有什么功能
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"java的executor包有什么功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java的executor包有什么功能"吧!sql语
千家信息网最后更新 2025年01月20日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()); // 取出参数列表 ListparameterMappings = 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安全错误
数据库的锁怎样保障安全
计算机网络技术需要什么成绩
无锡软件开发园
交通银行软件开发笔试题目
抖音服务器地址怎么查看
专业erp软件开发
使用境外服务器安全考量
海康摄像头添加到服务器上
深圳大合网络技术
网络安全法管理监督
暗影格斗出现没有服务器连接
重庆嵌入式软件开发哪里有
网络安全会议精神
vxworks能用什么数据库
软件开发web方向什么意思
苏州元来网络技术有限公司
云南电力软件开发
卫生院信息网络安全培训
医保网络安全管理通知
衡阳信息网络技术学校好不好
四川什么网络技术服务经验丰富
网络安全常识答案
保定网络技术怎么样
网络安全工程师周记
网络安全零报告表
福州软件开发有限公司法人
网络安全宣传教育普及
软件开发都有哪些项目
宇轩网络技术招聘信息
13号星期五数据库
我的世界在哪玩服务器