`
hxyt20
  • 浏览: 93296 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

parameterMap的应用

阅读更多

ibatis中的parameterMap的应用

在上篇文章中我们介绍了用ibatis实现了基本的增,删,改,查的功能,今天我们要介绍的是ibatis中的parameterMap的应用,我们结合具体的实例来讲解。(我们只是在上篇文章中的例题中新添一些内容,下面列出的是新添的内容)

1.映射配置(person.xml)

 

<!-- 测试parameterMap-->
	<parameterMap class="java.util.Map" id="query_some_param">
		<parameter property="firstName" javaType="java.lang.String" jdbcType="VARCHAR"/>
		<parameter property="lastName" javaType="java.lang.String" jdbcType="VARCHAR"/>
	</parameterMap>
	
	<select id="querySome" resultClass="Person" parameterMap="query_some_param">
		<![CDATA[
			select * from person where firstName =? and lastName=?
		]]>
	</select>

 

2.Dao(personDao.java)

public Map querySome(Map map, String key){
		return getSqlMapClientTemplate().queryForMap("person.querySome", map, key);
	}

 

3.Service

  (1)Service接口(IPersonService)

public Map querySome(Map map, String key);


 (2)Service实现类(PersonService)

 

public Map querySome(Map map, String key) {
		return personDao.querySome(map, key);
	}

 

4.Action(PersonAction)

 

public String querySome(){
		System.out.println("Enter into.........");
		Map map = new HashMap();
		map.put("firstName", "英");
		map.put("lastName", "黄");
		Map result = getPersonService().querySome(map, "id");
		for(Iterator it=result.keySet().iterator(); it.hasNext();){
			Integer pId = (Integer)it.next();
			Person pObject = (Person)result.get(pId);
			System.out.println("************************************");
			System.out.println("firstName"+pObject.getFirstName());
			System.out.println("lastName"+pObject.getLastName());
			System.out.println("birthDate"+pObject.getBirthDate());
			System.out.println("weight"+pObject.getWeight());
			System.out.println("height"+pObject.getHeight());
			System.out.println("************************************");
		}
		System.out.println("result.size():"+result.size());
		return null;
	}

 

针对以上这个例题,我的数据库的数据如下:

id   firstName   lastName   birthDate                   weight        height

3    映容           江            1984-08-21 00:00:00    45             160
4    英              黄            1988-09-20 00:00:00    40             160
5    萧英           李            1988-09-13 00:00:00    60             168
6    英              黄            1985-08-20 14:49:20    90             179
7    英              黄            2009-09-03 14:50:16    4               50

 

输出的结果如下:

************************************
firstName英
lastName黄
birthDateTue Sep 20 00:00:00 CST 1988
weight40.0
height160.0
************************************
************************************
firstName英
lastName黄
birthDateTue Aug 20 14:49:20 CST 1985
weight90.0
height179.0
************************************
************************************
firstName英
lastName黄
birthDateThu Sep 03 14:50:16 CST 2009
weight4.0
height50.0
************************************
result.size():3

 

在我们写

<select id="querySome" resultClass="Person" parameterMap="query_some_param">
<![CDATA[
select * from person where firstName =? and lastName=?
]]>
</select>

 

这段代码时,一定要写占位符"?",如果不用,而是写成如下这样

<select id="querySome" resultClass="Person" parameterMap="query_some_param">
  <![CDATA[
   select * from person where firstName like '%$firstName$%' and lastName like '%$lastName$%'
  ]]>
 </select>

 

那么,就会报如下的错误

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

关于Dao中调用的queryForMap方法中的参数key就是指定查出的属性中以那个属性的值作为返回的map中的键。就如上面的例题,result的键分别为4,6,7,值分别为id等于4,6,7的对象。

 

 

2
0
分享到:
评论

相关推荐

    ibatis应用

    - **参数映射**:在动态SQL中,通过&lt;parameterMap&gt;和标签将方法参数映射到SQL语句的占位符。 五、iBatis的动态SQL iBatis的动态SQL功能是其一大亮点,它允许在XML映射文件中编写条件语句,如、、、等,使得SQL语句...

    IBatis中的存储过程应用实例

    总结来说,IBatis允许我们在Java应用程序中方便地调用数据库的存储过程,通过Mapper配置文件定义参数映射,以及在实体类中封装输入和输出参数。这种方式既保留了存储过程的优点,又简化了与数据库的交互,提高了代码...

    iBatis详细使用手册(.net版)[收集].pdf

    iBatis可以应用于各种数据访问场景,包括Web应用程序、桌面应用程序、移动应用程序等。它提供了一种灵活的方式来实现数据访问逻辑,可以根据不同的需求和环境进行配置和调整。 8. iBatis的优点 iBatis的优点包括...

    MyBatis中map的应用

    假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map! //万能Map int addUser(Map map); insert into mybatis.user (id, name, pwd) values (#{userId},#{userName},#{password});...

    java修改请求参数

    篡改参数是一个重要的安全问题,尤其是对于处理敏感数据的应用。攻击者可能通过篡改请求参数来执行恶意操作,例如修改订单金额、欺骗身份等。因此,确保请求参数的安全性至关重要: - **验证和过滤输入**:对每个...

    1000道互联网Java工程师面试题.pdf

    例如、&lt;parameterMap&gt;、等。 二、Java知识点 1. Java是什么?Java是一种面向对象的编程语言,广泛应用于互联网行业。 2. Java的特点:面向对象、平台独立、简单易用、安全性高、多线程等。 3. Java的应用场景:Web...

    访问存储过程(或函数)一般以procedure标签来定义statement。

    对于存储过程或函数来说,它们往往需要与应用程序交互数据。为了实现这一点,IBATIS提供了`parameterMap`标签来定义输入输出参数。这些参数可以是简单的类型如字符串、整数等,也可以是复杂的类型如游标等。 ##### ...

    Eos命名Sql调用总结定义.pdf

    在Eos命名Sql调用中,开发者可以利用各种方法来高效地执行SQL操作,避免重复工作和不规范的代码。以下是对PDF文档中提到的知识点的详细解释: ...理解并熟练应用这些技术,能帮助开发者编写出更高效、可维护的代码。

    ibatis调存储过程返回游标

    这种机制为Java应用程序提供了强大的数据库交互能力,尤其是在处理大量数据和复杂查询场景下。 iBatis通过其灵活的配置和强大的映射功能,极大地简化了Java程序与数据库之间的交互,使得开发者能够更专注于业务逻辑...

    SSM框架整合,maven项目 尚硅谷ssm源码 Spring+SpringMVC+Mybatis+Bootstrap

    - 熟悉Mybatis的配置和映射文件,如何编写动态SQL,以及ResultMap、ParameterMap的使用。 - 应用Bootstrap进行界面设计,理解响应式布局和组件的使用方法。 - 实践数据库操作,了解如何将ORM(对象关系映射)与...

    超全SSM讲义(包含Spring+Mybatis+SpringMVC)

    5. Mybatis的配置与使用:XML配置文件、Mapper接口、动态SQL的编写,以及ResultMap、ParameterMap的设置。 6. Mybatis与Spring的整合:利用Spring的DataSource、SqlSessionFactoryBean等进行集成,实现DAO的无侵入式...

    MyBatis下调用存储过程并返回复杂结果集.docx

    在调用存储过程时,我们需要传入输入参数 `billNumber`,并将输出参数 `exMessage`、`baseSet` 和 `trackSet` 通过 `ParameterMap` 对象返回。 五、结果处理 在调用存储过程后,我们可以通过 `ParameterMap` 对象来...

    MyBatis基本使用总结

    对于复杂参数,可以使用`&lt;parameterMap&gt;`和`&lt;resultMap&gt;`进行映射,实现灵活的数据绑定。结果集映射则通过`&lt;result&gt;`标签定义字段与Java属性的对应关系,确保查询结果能够正确地转化为实体对象。 六、动态SQL ...

    Ibatis学习随笔

    5. ParameterMap和ResultMap:分别用于参数映射和结果映射,定义了Java对象与SQL参数、结果集之间的对应关系。 三、Ibatis的工作流程 1. 创建SqlSessionFactory:它是Ibatis的核心工厂类,负责创建SqlSession实例。...

    面试资料总结

    - **MyBatis框架**:理解动态SQL,XML与注解配置方式,以及ResultMap和ParameterMap的应用。 8. **设计模式**: - 掌握常见的设计模式,如单例模式、工厂模式、观察者模式、装饰器模式等,理解它们在实际项目中的...

    使用FineReport报表二次开发详述

    在实际应用中,尽管FineReport的基本功能已经非常强大,但在某些特定场景下,如需要实现定制化功能时,其内置的功能可能无法完全满足需求。因此,FineReport提供了一系列丰富的二次开发接口,以便开发者可以根据具体...

    Ibatis框架的核心知识点

    Ibatis 是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,从而简化了Java应用程序与数据库的交互。Ibatis 的核心知识点主要包括以下几个方面: 1. **SQL Map XML 映射文件** SQL Map XML ...

    iBATIS框架主要的类层次结构.pdf

    实际应用中,通常会通过`SqlMapClientImpl`类来实现这些功能。`SqlMapSession`是每个数据库会话的表示,可以共享或独立创建,但使用完毕后需调用关闭接口释放资源。 `SqlMapExecutorDelegate`是执行代理类,它是...

    springmvcmybatis

    MyBatis的Executor执行器负责执行SQL,ResultMap用于映射查询结果到Java对象,ParameterMap则用来映射参数。此外,MyBatis支持动态SQL,允许在SQL语句中使用条件判断,提高了代码的可读性和灵活性。 结合这两个框架...

Global site tag (gtag.js) - Google Analytics