Ibatis2.0使用说明——配置篇(3)

Python遥感图像处理指南(2)-卫星影像分析MNDWI提取 在第一篇文章中,我们使用了我们导入的软件包中已定义的函数,如 rasterio 中的 open 和 read 以及 matplotlib 中的 imshow。现在,我们可以编写自己的函数了。函数是一段代码,它接收一些参数作为输入并返回输出(经过一些计算),可以在代码中多次重复使用,也可以被其他代码重用。在 Python 中定义一个新函数非常简单。return v在此语法示例中,arg1和arg2强制参数,应该传递给函数,否则会引发错误,而arg3是一个可选参数,如果是,则假定默认值 1从函数调用中省略。 阅读详情
 
statement中的参数简介:

1. parameterClass

parameterClass 属性的值是Java类的全限定名(即包括类的包名)。parameterClass属性是可选的,目的是限制输入参数的类型为指定的Java 类。虽然Parameter-class属性是可选的,建议你为每一个SQL都指定parameterClass。如果不指定parameterClass 参数,任何带有合适属性(get/set 方法)的Java Bean 都可以作为输入参数。如果你使用了parameterMap, 那么你就不需要再使用parameterClass属性了。
下面是例子:
例1:
<insert id="insertAuthor2" parameterClass="Author">
       INSERT INTO author (auth_name,auth_age,auth_tel,auth_address) VALUES (#name#,#age#,#telephone#,#address#)
</insert>
 
在上面的语句中,你指定的parameterClass=Author,那么在你的Author类中要有name,age,telephone和address属性,并且要有相应的get和set方法
例2:
你可以使用基本类型作为parameterClass,如:
<delete id="deleteAuthor" parameterClass="int">
       delete from author WHERE auth_id = #id#
</delete>
例3:
你可以使用HashMap作为parameterClass,如:
<insert id="insertAuthor3" parameterClass="java.util.HashMap">
       INSERT INTO author (auth_name,auth_age,auth_tel,auth_address) VALUES (#name#,#age#,#telephone#,#address#)
</insert>
这时候,在你调用insertAuthor3的时候,你首先应该给传入的Map对象赋值,调用代码如下:
       HashMap paramMap = new HashMap();
       paramMap.put("name", "作者三");
       paramMap.put("age",new Integer(31));
       paramMap.put("address","南京");
       paramMap.put("telephone","025-987654321");
       sqlMapClient.insert("insertAuthor3", paramMap);

2. parameterMap

parameterMap 定义一系列有次序的参数用于匹配PreparedStatement 的JDBC值符号。
parameterMap属性很少使用,parameterMap 属性的值等于指定的parameterMap元素的name属性值。通常(和缺省的)的方法是使用inline parameters。
 
注意!动态mapped statement 只支持inline parameter,不支持parameter map。关于动态mapped statement,将在后文中介绍。
 
例如:
<parameterMap id="authorParameter" class="Author">
       <parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
       <parameter property="age" jdbcType="INTEGER" javaType="java.lang.Integer" mode="INOUT"/>
       <parameter property="telephone" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
       <parameter property="address" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
</parameterMap>
<insert id="insertAuthor1" parameterMap="authorParameter">
       INSERT INTO author (auth_name,auth_age,auth_tel,auth_address) VALUES (?,?,?,?)
</insert>
 
上面的例子中,parameterMap的参数按次序匹配SQL语句中的值符号(?)。因此,第一个"?"号将被"name"属性的值替换,而第二个"?"号将被"age"属性的值替换,依此类推。
 
记住:使用parameterMap的时候,SQL中的参数用"?"来代替,并且每个"?"的顺序要与parameterMap中的定义完全匹配;如果使用parameterClass,那么SQL中的参数用"#parameterName#"来代替,如果传入的参数类为Bean,那么要有get和set这个参数名的方法。

3. resultClass

resultClass 属性可以让您指定一个Java 类,根据ResultSetMetaData 将其自动映射到JDBC ResultSet。只要是JavaBean 的属性、方法名称和ResultSet的列名匹配,属性自动赋值列值。
 
例1:
<select id="getAuthor1" parameterClass="int" resultClass="Author">
       SELECT auth_id as id,auth_name as name,auth_age as age,auth_tel as telephone,auth_address as address FROM author WHERE auth_id = #id#
</select>
在上面的语句中,你指定的resultClass=Author,那么在你的Author类中要有id,name,age,telephone和address属性,并且要有相应的get和set方法。
如果你写成:
<select id="getAuthor1" parameterClass="int" resultClass="Author">
       SELECT auth_id,auth_name,auth_age,auth_tel,auth_address FROM author WHERE auth_id = #id#
</select>
那么在你的Author类中,要有auth_id,auth_name,auth_age,auth_tel,auth_address属性,并且要有相应的get和set方法。
例2:
你还可以使用基本类型作为resultClass,如:
<statement id="getAuthorNumber" resultClass="int">
       <![CDATA[SELECT count(auth_id) as totalAuthor FROM author]]>
</statement>
例3:
你还可以使用HashMap作为resultClass,如:
<select id="getAuthor4" resultClass="java.util.HashMap">
       SELECT a.auth_id as authorid,a.auth_name as authname,a.auth_age as authage,a.auth_tel as authtel,a.auth_address as authaddress,b.art_title as arttitle FROM author a, article b WHERE a.auth_id=b.art_author
</select>
下面是调用代码:
List authorList = (List)sqlMapClient.queryForList("getAuthor4",null);
showMethod("getAllAuthor");
for(int i=0;i<authorList.size();i++)
{
       HashMap authMap = (HashMap)authorList.get(i);
       System.out.println("auth_id="+authMap.get("authid")+"; auth_name="+authMap.get("authname")+"; auth_age="+authMap.get("authage")+"; auth_tel="+authMap.get("authtel")+"; auth_address="+authMap.get("authaddress")+";auth_article="+authMap.get("arttitle"));
}
 
但是,使用resultClass 的自动映射存在一些限制,无法指定输出字段的数据类型,无法自动装入相关的数据(复杂属性),并且因为需要ResultSetMetaData的信息,会对性能有轻微的不利影响。但使用resultMap,这些限制都可以很容易解决。

4. resultMap

使用resultMap 属性可以控制数据如何从结果集中取出,以及哪一个属性匹配哪一个字段。不象上面使用resultClass 属性的自动映射方法,resultMap属性可以允许指定字段的数据类型,NULL 的替代值。
例如:
<resultMap id="authorResult" class="Author">
       <result property="id" column="auth_id"/>   
       <result property="age" column="auth_age"/>
       <result property="name" column="auth_name"/>
       <result property="telephone" column="auth_tel"/>
       <result property="address" column="auth_address"/>
</resultMap>
 
<select id="getAuthor3" resultMap="authorResult">
       SELECT auth_id,auth_name,auth_age,auth_tel,auth_address FROM author WHERE auth_address like #%address%#
</select>
或
<statement id="getAllAuthor" resultMap="authorResult">
       SELECT * FROM author
</statement>
 
在上面的语句中,你指定的resultClass=Author,那么在你的Author类中要有id,name,age,telephone和address属性,并且要有相应的get和set方法。
 
通过resultMap 的定义,查询语句得到的ResultSet 被映射成Author对象。resultMap定义"id"属性值将赋予"auth_id"字段值,而"telephone"属性值将赋予"auth_tel"字段值,依次类推。
 
注意:在resultMap中所指定的字段必须是下面的select中的子集。
也就是说,你不能写成
<select id="getAuthor3" resultMap="authorResult">
       SELECT auth_address FROM author WHERE auth_address like #%address%#
</select>
但是你可以在resultMap中去掉<result property="id" column="auth_id"/>这行,仍然可以执行下面的语句:
<select id="getAuthor3" resultMap="authorResult">
       SELECT auth_id,auth_name,auth_age,auth_tel,auth_address FROM author WHERE auth_address like #%address%#
</select>
这样的话,你就无法取得auth_id的值。 

5. cacheModel

定义查询mapped statement 的缓存。每一个查询mapped statement 可以使用不同或相同的cacheModel。
<cacheModel id="author-cache" imlementation="LRU">
       <flushInterval hours="24"/>
       <flushOnExecute statement="insertProduct"/>
       <flushOnExecute statement="updateProduct"/>
       <flushOnExecute statement="deleteProduct"/>
       <property name="size" value="1000" />
</cacheModel>
<select id="getAuthor3" resultMap="authorResult" cacheModel="author-cache">
       SELECT auth_id,auth_name,auth_age,auth_tel,auth_address FROM author WHERE auth_address like #%address%#
</select>
 
上面的配置说明:"getAuthor3"的缓存使用WEAK引用类型,当你通过调用"getAuthor3"的时候,Ibatis将会把结果缓存起来。每24 小时缓存刷新一次,或当更新的操作(即上面配置的insertProduct、updateProduct或deleteProduct)发生时刷新。
 
当你对某些表中的记录操作频繁时,可以考虑使用缓冲,但是如果数据量过大的话,最好另想办法。 

6. xmlResultName

当映射结果指向一个XML文档的时候,xmlResultName的值是指那个XML文档的root标签的名字。例如:
<select id="getAuthor1" parameterClass="int" resultClass="Author" xmlResultName="author">
       SELECT auth_id as id,auth_name as name,auth_age as age,auth_tel as telephone,auth_address as address FROM author WHERE auth_id = #id#
</select>
上面的select将产生如下的XML对象:
<author>
       <id>1</id>
       <name>作者三</name>
       <age>31</age>
       <telephone>025-987654321</telephone>
       <address>南京</address>
</author>
TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate 这篇被 ICLR 2026 接收的论文提出了一种名为TurboQuant的全新在线向量量化(Vector Quantization, VQ)算法。该研究的核心目标是解决大语言模型(LLM)在长上下文推理时面临的 KV Cache 显存消耗瓶颈,以及大规模向量数据库在近似最近邻检索中的存储与延迟问题。有别于现有技术,TurboQuant 是一种无需任何校准数据、无需训练的在线算法(Data-oblivious)。 阅读详情

相关推荐

低电压高效率能源管理芯片BQ25570的基本用法及应用电路实例

BQ25570是一款低电压、高效率、集成了可编程功率追踪(MPPT)功能、BOOST升压功能和BUCK降压功能的综合型能源管理电路。冷启动工作电压为330mV,热启动工作电压为100mV。主要应用于温差发电片TEG、压电、摩擦发电和太阳能板的能量收集,也可以用于人体可穿戴自取能传感设备的能量管理。本文主要介绍了BQ25570相关参数计算、MPPT功能验证、工作逻辑和应用场景,并设计了一版测试电路,给出了不同应用需求的电路配置建议。

weixin_49213602的博客 3450

ibatis配置文件中 parameterClass,resultClass,resultMap的区别

1、parameterClass = 传递过来的参数类型 2、resultClass = 返回的元素类型 3、resultMap = 返回成员映射 注:ibatIS中的parameterClass,一般分类两种,1种为传model,另一种为传map...

gao_sl的博客 1765

使用.NET 免费开源包ViewFaceCore做一个人脸识别并注册的功能,没有比我更全的

本文介绍了一个基于WinForm的免费人脸识别系统实现方案。系统使用AForge和ViewFaceCore库,支持从USB或电脑自带摄像头采集图像,具备人脸注册和快速识别功能。硬件方面仅需普通摄像头,软件依赖多个NuGet包(如AForge.Video、ViewFaceCore等)。界面包含视频显示、图像预览和功能按钮控件,后台采用SQLServer存储用户面部特征数据。核心代码展示了人脸检测、特征提取和多线程处理逻辑,通过ViewFaceCore实现高效识别。系统具有识别速度快、准确率高的特点,适合Win

一个靠“吃代码”长大的程序猿,专治各种“Bug 饥饿症”。 817

mybatis中的parameterClass是指传入参数的类型

mybatis中的parameterClass是指传入参数的类型!!!

jiaonizuoren的博客 3526

MIMIC-IV数据库中患者院内死亡的单因素生存分析

目的 由易到难,对mimic-iv的查询进行实际操作,体现先前文章中提到的mimic-iv数据查询的规律。 数据分析计划 死亡,是重症患者最重要的结局指标,在MIMIC数据库中收录了院内死亡的数据,以及进出ICU的时间(和进出医院的时间),所以我们可以获得是否死亡,以及从入ICU(或入院)到死亡发生之间的时间,有了这两个指标,我们可以通过Cox单因素(参数和非参数)模型来观察ICU(和医院)内死亡的趋势,以及某个变量(比如,性别和种族等)对死亡趋势的影响,以为后续的分析奠定基础。 数据的获取 我们需要数个变

skyskytotop的博客 3185

用python将dycom .dcm格式图像转换为nifti .nii

因为发现目前搜索到的多数中文教程并不能正确将FMRI图像正确转换,例如很多用simpleITk的seriesreader的,所以写了一下自己正确转换的方法。因为FMRI是一个4D数据,有时间轴,所以用seriesreader读写出来的图像把时间轴维度给降维了。当然你用SPM12工具的dycom import也是能正确转换的,但是我还是喜欢python这样的,代码直接简单。

qq_41103479的博客 3609

Ibatis2.0使用说明(二)——配置篇(3)

文章转载自互联网,如果您觉得我们侵权了,请联系管理员,我们会立刻处理。 statement中的参数简介: 1. parameterClass parameterClass 属性的值是Java类的全限定名(即包括类的包名)。parameterClass属性是可选的,目的是限制输入参数的类型为指定的Java 类。虽然Parameter-class属性是可...

weixin_34320159的博客 175

新手必看!Stata工具变量分析中的三大陷阱:如何正确解读LM统计量、CDW检验和Hansen J值

本文深度解析Stata工具变量分析中的三大核心检验:不可识别检验、弱IV检验和过度识别检验,帮助新手避开常见陷阱。详细解读LM统计量、CDW检验和Hansen J值的正确使用方法,提供实战案例和Stata操作指南,确保研究结论的可靠性。

weixin_29231027的博客 572

ibatIS中的parameterClass,一般分类两种,1种为传model,另一种为传map

ibatIS中的parameterClass,一般分类两种,1种为传model,另一种为传map 一、parameterClass传model参数 Java代码   "queryModel"  parameterClass="com.hanpeng.base.phone.model.TDictionary" resultClass="com.hanpeng.base.ph

非著名程序员 3089

LoRa项目实战:手把手教你为ESP32选配和焊接天线(从PCB到信号测试)

本文详细介绍了为ESP32选配和焊接LoRa天线的全流程,包括天线选型、PCB布局设计、焊接工艺及信号测试。重点解析了PCB板载天线、导线天线和陶瓷贴片天线的适用场景与性能特点,并提供专业的焊接技巧和信号测试方案,帮助开发者优化LoRa模块的无线通信性能。

weixin_30470643的博客 393

YOLO系列算法改进 | C2PSA改进篇 | 融合FSD频域结构解耦模块 | 双域解耦感知,兼顾全局亮度与局部纹理,适应红外小目标与边缘部署场景 | ICME 2026

YOLO系列算法改进 | C2PSA改进篇 | 融合FSD频域结构解耦模块 | 双域解耦感知,兼顾全局亮度与局部纹理,适应红外小目标与边缘部署场景 | ICME 2026 (以YOLO26最新目标检测模型为基础,利用C2PSA_FSD创新模块进行改进)

2502_91881744的博客 315

ibatis中的resultClass,parameterClass,resultMap,resultType的使用与区别

parameterClass 是参数类。指定了参数的完整类名(包括包路径)。可通过别名避免每次重复书写冗长的类名。   resultClass 是结果类, 二、resultClass取值 1.resultClass="Integer"//基本类型,或者是java.lang.Integer 2.resultClass="com.sfbest.product.bean.ProductPi...

weixin_34279061的博客 464

毕设助力!从0到1构建基于YOLO的家居安防异常活动监测系统,让你的毕设守护家庭安全

做完这个项目,你会发现自己完整走过了“数据采集→标注→模型训练→功能集成→界面开发”的毕设全流程,这不仅是技术能力的证明,更是对“技术守护生活”这一理念的实践。答辩时,你可以重点讲这几点:系统解决了家居安防的哪些痛点、对比了不同YOLO模型的性能差异、系统未来能怎么优化(比如对接智能门锁/报警器、实现语音交互)。未来,这个系统还能往“更智能”的方向发展:比如结合行为分析判断异常意图、开发移动端APP实现全屋设备联动、在智慧社区中实现多家庭联防……想象空间很大。

LXY_LOVE36的博客 120

Ibatis2.0使用说明(二)——配置篇(3

statement中的参数简介:1. parameterClassparameterClass 属性的值是Java类的全限定名(即包括类的包名)。parameterClass属性是可选的,目的是限制输入参数的类型为指定的Java 类。虽然Parameter-class属性是可选的,建议你为每一个SQL都指定parameterClass。如果不指定parameterClass 参数,任何

1991

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Ibatis2.0使用说明(二)——配置篇(3)[原]

statement中的参数简介:1. parameterClassparameterClass 属性的值是Java类的全限定名(即包括类的包名)。parameterClass属性是可选的,目的是限制输入参数的类型为指定的Java 类。虽然Parameter-class属性是可选的,建议你为每一个SQL都指定parameterClass。如果不指定parameterClass 参数,任何

猴子腿儿的Blog 1812

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从IBatis2.X 移植到IBatis3.0 sqlMapConfig and sqlMap XML 配置文件升级说明

以下将介绍 从Ibatis2.X 升级到 Ibatis3.0 配置文件的升级,这仅仅是一个初步的修改意见,我已经决定并开始移植工作, 我没有很多的时间去测试它,所以目前我不能保证他完全正确,但是我会通过你们的建议让他逐步的完善准确. 新的 sqlMapConfig.xml DTD:<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DT...

weixin_30273501的博客 131

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

从IBatis2.X 移植到IBatis3.0 sqlMapConfig and sqlMap XML 配置文件升级说明

以下将介绍 从Ibatis2.X 升级到 Ibatis3.0 配置文件的升级,这仅仅是一个初步的修改意见,我已经决定并开始移植工作, 我没有很多的时间去测试它,所以目前我不能保证他完全正确,但是我会通过你们的建议让他逐步的完善准确. 新的 sqlMapConfig.xml DTD: <!DOCTYPE configuration PUBLIC "-//ibatis...

weixin_33779515的博客 89

缓存初解(四)---Ibatis的缓存配置+Ehcache

项目完结,整理一些技术方面的相关收获。 已经记不得EhCacheController这个实现类最早来自于那里了,总之稍加修改后非常有效果,大家就这么用了,感谢最初开源的那位兄弟。这里,主要是做个记录,为以后类似扩展(譬如Memcached)做个准备。 iBatis提供CacheController接口,用于实现第三方缓存架构的扩展。 这里以iBatis 2.3.0,EhCache 1.2....

weixin_30535913的博客 87

Ibatis2.0使用说明

 Ibatis2.0使用说明(二)——配置篇(4)     五、Parameter Maps and Inline Parameters              [nullValue="NUMERIC"] [null="-9999999"]/>              括号[]中是可选的属性。parameterMap 元素的id 属性作为唯一标识,在同一个SQL Map

y_mo的专栏 954

Ibatis2.0使用说明(二)——配置篇(4)

五、Parameter Maps and Inline Parameters              [nullValue="NUMERIC"] [null="-9999999"]/>              括号[]中是可选的属性。parameterMap 元素的id 属性作为唯一标识,在同一个SQL Map XML 文件中不能重名。一个parameterMa

2259

iBatis 2.x 到 MyBatis 3.0.x 的区别

简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方。通过对本文的学习,读者基本能够了解 MyBatis 有哪些方面的改进,并能够顺利使用 MyBatis 进行开发。本文更适合有 iBatis 基础的开发人员阅读。 从 iBatis 到 MyBatis,你准备好了吗? 对于从事 Ja

renyl_blog的博客 376

iBatis2MyBatis:轻松实现iBatis到MyBatis的自动化迁移

在现代软件开发中,框架的迭代更新是不可避免的趋势。对于长期使用iBatis进行持久层管理的老旧项目来说,迁移到功能更强大、社区支持更广泛的MyBatis成为了许多开发者的必然选择。今天,我们将深入介绍一个实用且高效的开源工具——iBatis2MyBatis转换器。 ## 项目概述 iBatis2MyBatis是一个轻量级的自动化迁移工具,专门设计用于将现有的iBatis SQL映射文件转换为M

gitblog_00210的博客 1047

Ibatis2.0使用说明——配置篇(1)

 一、 SQL Map XML 配置文件SQL Map 使用XML 配置文件集中的配置不同的设置属性,包括DataSource 的详细配置信息,SQL Map 和其他可选属性,如线程管理等。以下是SQL Map 配置文件的一个例子:SqlMapConfig.xmlPUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibat

hjpengjava的专栏 482

IBatis3.0 xml配置方式的应用(JPA+IBatis3.0应用)

   最近网上出现IBatis3.0的文章本人也做了小Demo,用一下啊,哈哈。 采用JpA注解实体,采用IBatis3.0的新的开发方式: 采用xml配置IBatis的各种配置文件时数据源可以不适用commons-collections,但是在使用注解时,必须的。有点不解。  使用的类库如下: &lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt...

topMan'blog 282

Ibatis2.0使用说明(一)——入门实例篇[原]

本文章将从一个Ibatis的具体示例,帮助你快速了解IBatis框架。一个简单的IBatis应用包含以下基本步骤:一、 配置文件1. 配置SqlMapConfig.properties文件2. 配置SqlMapConfig.xml文件3. 配置SqlMap.xml文件(可能有多个文件,一般情况下,可以一个表对应一个SqlMap.xml文件,文件名称可以与表名相同)注意:上面所述

猴子腿儿的Blog 3658
上一篇: Ibatis2.0使用说明——配置篇(2)
下一篇: Ibatis2.0使用说明——配置篇(4)
hjpengjava
博客等级 码龄18年 5粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值