parameterMap
属性parameterMap的值等于一个预先定义的<parameterMap>元素的名称。parameterMap属性很少使用,更多的是使用上面的parameterClass和inline parameter(接下来会讨论)。
注意!动态mapped statement只支持inline parameter,不支持parameter map。
parameterMap的基本思想是定义一系列有次序的参数系列,用于匹配JDBC PreparedStatement的值符号。例如:
<parameterMap class="com.ibatis.dataobject.Product" id="insert-product-param" >
<parameter property="id"/>
<parameter property="description"/>
<parameter property="price"/>
</parameterMap>
<statement id="insertProduct-useParaMap" parameterMap="insert-product-param">
<![CDATA[insert into t_product(prd_id,prd_description,prd_price) values(?,?,?)]]>
</statement>
上面的例子中,parameter map的两个参数按次序匹配SQL语句中的值符号(?)。因此,第一个“?”号将被“id”属性的值替换,而第二个“?”号将被“description”属性的值替换。
DAO实现类:
public boolean addProductUseParaMap(Product product) {
init();
Object obj = null;
boolean flag = true;
try {
obj = sqlMapClient.insert("insertProduct-useParaMap", product);
} catch (SQLException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
测试类:
Product product = new Product();
product.setId(2);
product.setDescription("football");
product.setPrice(106.99D);
productDao.addProductUseParaMap(product);
product = (Product)productDao.getProduct(new Integer(2));
System.out.println(product);
具体的parameterMap:
<parameterMap id=”parameterMapName” [class=”com.domain.Product”]>
<parameter property =”propertyName”
[jdbcType=”VARCHAR”]
[javaType=”string”]
[nullValue=”NUMERIC”]
[null=”-9999999”]
/>
<parameter…… />
<parameter …… />
</parameterMap>
Class属性是可选的,Class属性必须是JavaBean或Map实列,Class属 性虽是可选的,但推荐大家指定,
Class属性可以用来验证传入的参数的合法性及优化查询
<parameter>元素:
1.property
-
属性property是传给statement的参数对象的Java Bean属性名称。该名称根据需要,可以在statement中多次出现(即在SQL语句SET子句中被更新的属性,也可以作为条件出现在WHERE子句中)。
2.jdbcType
属性jdbcType用于显式地指定给本属性(property)赋值的数据库字段的数据类型。
注意!
大多数JDBC Driver只有在字段可以为NULL时需要指定jdbcType属性。因此,对于这些Driver,只是在字段可以为NULL时才需要指定type属性。
注意!
当使用Oracle Driver时,如果没有给可以为NULL的字段指定jdbcType属性,当试图给这些字段赋值NULL时,会出现“Invalid column type”错误。
3.javaType
属性javaType用于显式地指定被赋值参数Java属性的类名。
4.nullValue
(要特别关注)
属性nullValue的值可以是对于property类型来说任意的合法值,用于指定NULL的替换值。就是说,当Java Bean的属性值等于指定值时,相应的字段将赋值NULL。这个特性允许在应用中给不支持null的数据类型(即int,double,float等)赋值null。当这些数据类型的属性值匹配null值(即匹配-9999)时,NULL将代替null值写入数据库。
</parameter>元素
注意!
parameterMap并不自动地绑定到特定的Java类。因此在上面的例子中,任何拥有“id”和“description”属性的Java Bean对象,都可以作为parameterMap的输入。如果需要将输入绑定到特定的Java类,可以使用mapped-statement的resultClass属性。
注意!
Parameter Map的名称(name)局部的,只在定义它的SQL Map XML文件中有效。不过,加上SQL Map的名称(即在<sqlMap>根元素中的名称)作为前缀,您可以在另一个SQL Map XML文件中引用它。例如,要在另一个文件中引用以上的parameterMap,可以使用名称“Product.insert-product-param”。
分享到:
相关推荐
ibatis学习 ibatis总结 ibatis ibatis ibatis
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
ibatis实战之基础环境搭建(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/28267901
ibatis demo,ibatis例子,ibatis示例
iBATIS 级联iBATIS 级联iBATIS 级联
iBATIS教程是iBATIS初学者需要掌握什么内容呢?那么这篇文章就会告诉你。
ibatis的原码 ibatis源码 ibatis源码 ibatis源码
Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...
ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成
Ibatis3,手册,Ibatis3手册,Ibatis3使用手册,Ibatis3参考手册
深入分析 iBATIS 框架之系统架构与映射原理深入分析 iBATIS 框架之系统架构与映射原理深入分析 iBATIS 框架之系统架构与映射原理深入分析 iBATIS 框架之系统架构与映射原理
ibatis api,ibatis文档,ibatis说明文档
ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南
ibatis 乱码解决 ibatis乱码 gbk iso_8859_1 乱码
ibatis
《iBATIS实战》是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。《iBATIS实战》的最后给出了一个...
ibatis教程,ibatis帮助文档,ibatis学习入门
简单的Ibatis入门例子,让你踏入Ibatis大门
经典开源插件之ibatis: 一个使用ibatis对数据库增删改查的例子 数据库, ibatis, 经典, 例子, 插件
ibatis入门与ibatis迭代的用法