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的对象。
分享到:
相关推荐
- **参数映射**:在动态SQL中,通过<parameterMap>和标签将方法参数映射到SQL语句的占位符。 五、iBatis的动态SQL iBatis的动态SQL功能是其一大亮点,它允许在XML映射文件中编写条件语句,如、、、等,使得SQL语句...
总结来说,IBatis允许我们在Java应用程序中方便地调用数据库的存储过程,通过Mapper配置文件定义参数映射,以及在实体类中封装输入和输出参数。这种方式既保留了存储过程的优点,又简化了与数据库的交互,提高了代码...
iBatis可以应用于各种数据访问场景,包括Web应用程序、桌面应用程序、移动应用程序等。它提供了一种灵活的方式来实现数据访问逻辑,可以根据不同的需求和环境进行配置和调整。 8. iBatis的优点 iBatis的优点包括...
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map! //万能Map int addUser(Map map); insert into mybatis.user (id, name, pwd) values (#{userId},#{userName},#{password});...
篡改参数是一个重要的安全问题,尤其是对于处理敏感数据的应用。攻击者可能通过篡改请求参数来执行恶意操作,例如修改订单金额、欺骗身份等。因此,确保请求参数的安全性至关重要: - **验证和过滤输入**:对每个...
例如、<parameterMap>、等。 二、Java知识点 1. Java是什么?Java是一种面向对象的编程语言,广泛应用于互联网行业。 2. Java的特点:面向对象、平台独立、简单易用、安全性高、多线程等。 3. Java的应用场景:Web...
对于存储过程或函数来说,它们往往需要与应用程序交互数据。为了实现这一点,IBATIS提供了`parameterMap`标签来定义输入输出参数。这些参数可以是简单的类型如字符串、整数等,也可以是复杂的类型如游标等。 ##### ...
在Eos命名Sql调用中,开发者可以利用各种方法来高效地执行SQL操作,避免重复工作和不规范的代码。以下是对PDF文档中提到的知识点的详细解释: ...理解并熟练应用这些技术,能帮助开发者编写出更高效、可维护的代码。
这种机制为Java应用程序提供了强大的数据库交互能力,尤其是在处理大量数据和复杂查询场景下。 iBatis通过其灵活的配置和强大的映射功能,极大地简化了Java程序与数据库之间的交互,使得开发者能够更专注于业务逻辑...
- 熟悉Mybatis的配置和映射文件,如何编写动态SQL,以及ResultMap、ParameterMap的使用。 - 应用Bootstrap进行界面设计,理解响应式布局和组件的使用方法。 - 实践数据库操作,了解如何将ORM(对象关系映射)与...
5. Mybatis的配置与使用:XML配置文件、Mapper接口、动态SQL的编写,以及ResultMap、ParameterMap的设置。 6. Mybatis与Spring的整合:利用Spring的DataSource、SqlSessionFactoryBean等进行集成,实现DAO的无侵入式...
在调用存储过程时,我们需要传入输入参数 `billNumber`,并将输出参数 `exMessage`、`baseSet` 和 `trackSet` 通过 `ParameterMap` 对象返回。 五、结果处理 在调用存储过程后,我们可以通过 `ParameterMap` 对象来...
对于复杂参数,可以使用`<parameterMap>`和`<resultMap>`进行映射,实现灵活的数据绑定。结果集映射则通过`<result>`标签定义字段与Java属性的对应关系,确保查询结果能够正确地转化为实体对象。 六、动态SQL ...
5. ParameterMap和ResultMap:分别用于参数映射和结果映射,定义了Java对象与SQL参数、结果集之间的对应关系。 三、Ibatis的工作流程 1. 创建SqlSessionFactory:它是Ibatis的核心工厂类,负责创建SqlSession实例。...
- **MyBatis框架**:理解动态SQL,XML与注解配置方式,以及ResultMap和ParameterMap的应用。 8. **设计模式**: - 掌握常见的设计模式,如单例模式、工厂模式、观察者模式、装饰器模式等,理解它们在实际项目中的...
在实际应用中,尽管FineReport的基本功能已经非常强大,但在某些特定场景下,如需要实现定制化功能时,其内置的功能可能无法完全满足需求。因此,FineReport提供了一系列丰富的二次开发接口,以便开发者可以根据具体...
Ibatis 是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,从而简化了Java应用程序与数据库的交互。Ibatis 的核心知识点主要包括以下几个方面: 1. **SQL Map XML 映射文件** SQL Map XML ...
实际应用中,通常会通过`SqlMapClientImpl`类来实现这些功能。`SqlMapSession`是每个数据库会话的表示,可以共享或独立创建,但使用完毕后需调用关闭接口释放资源。 `SqlMapExecutorDelegate`是执行代理类,它是...
MyBatis的Executor执行器负责执行SQL,ResultMap用于映射查询结果到Java对象,ParameterMap则用来映射参数。此外,MyBatis支持动态SQL,允许在SQL语句中使用条件判断,提高了代码的可读性和灵活性。 结合这两个框架...