Mybatis传多个参数(三种解决方案)
2014-09-26 2 个评论 来源:厚积薄发,博观约取 收藏 我要投稿
据我目前接触到的传多个参数的方案有三种。
第一种方案
DAO层的函数方法
Public User selectUser(String name,String area);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap">
select * from user_user_t where user_name = #{0} and user_area=#{1}
</select>
其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。
第二种方案
此方法采用Map传多参数.
Dao层的函数方法
Public User selectUser(Map paramMap);
对应的Mapper.xml
<select id=" selectUser" resultMap="BaseResultMap">
select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
</select>
Service层调用
Private User xxxSelectUser(){
Map paramMap=new hashMap();
paramMap.put(“userName”,”对应具体的参数值”);
paramMap.put(“userArea”,”对应具体的参数值”);
User user=xxx. selectUser(paramMap);}
个人认为此方法不够直观,见到接口方法不能直接的知道要传的参数是什么。
第三种方案
Dao层的函数方法
Public User selectUser(@param(“userName”)Stringname,@param(“userArea”)String area);
对应的Mapper.xml
<select id=" selectUser" resultMap="BaseResultMap">
select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
</select>
个人觉得这种方法比较好,能让开发者看到dao层方法就知道该传什么样的参数,比较直观,个人推荐用此种方案。
例如:
当出入map时,mapper.xml可以直接用键
//最近30天内联网率
map.put("gatewayId", objectNo);
DeviceGatewayHistory dgh = deviceGatewayHistoryService.findOnlineByMap(map);
mapper.xml配置
<select id="selectOnlineByMap" resultMap="BaseResultMap" parameterType="java.util.HashMap" useCache="true">
SELECT GATEWAY_ID, SUM(ONLINE_MINUTE) as ONLINE_MINUTE, SUM(UNDERLINE_MINUTE) as UNDERLINE_MINUTE
FROM device_gateway_history
WHERE STIME>=#{stime} AND <![CDATA[ETIME<=#{etime}]]> AND GATEWAY_ID=#{gatewayId} GROUP BY GATEWAY_ID
</select>
分享到:
相关推荐
在MyBatis框架中,当需要传递多个参数时,通常有三种常见的解决办法。这些方法各有优缺点,选择哪种取决于个人喜好和项目需求。下面将详细阐述这三种解决方案。 **第一种方案:使用位置参数** 在DAO层,你可以定义...
"spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目"是针对这种需求的一个解决方案,旨在提供一种灵活且动态的数据源切换机制。 首先,Spring框架作为Java领域中最受欢迎的应用框架之一,其强大...
在使用MyBatis进行数据库操作时,我们经常会遇到需要传递多个参数的情况。在这个问题中,开发者遇到了一个关于如何正确传入参数#{index}的问题。在MyBatis中,#{index}是参数占位符,它用于动态SQL的拼接,但具体...
JSQ+MyBatis+MySQL 中文乱码解决方案 中文乱码是 JSQ、MyBatis 和 MySQL 集成时常见的问题,解决这个问题需要从多方面入手。本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 ...
在处理多参数查询时,MyBatis提供了多种解决方案,包括通过Map和JavaBean传递参数。下面将详细介绍这两种方法。 ### 1. 通过Map传递多个参数 当需要传递多个参数时,可以使用`Map, Object>`作为方法的参数。在Java...
这里主要探讨的是关于MyBatis(以及它的前身iBatis)处理GBK和ISO-8859-1编码时出现的问题及其解决方案。 首先,我们要了解字符编码的基础知识。GBK是汉字的扩展GBK编码,包含了大部分简体中文字符,而ISO-8859-1是...
在MyBatis中,多条件查询是常见的需求,特别是在数据检索和过滤时。通常,我们会根据传递的参数来决定查询的条件。然而,有时我们可能需要根据数据库字段本身的...在实际应用中,应根据具体情况选择最适合的解决方案。
#### 十一、MyBatis传入多个参数时的处理方式 - **参数处理**:可以使用`@Param`注解为每个参数指定名称,也可以直接使用位置参数或Map类型。 #### 十二、列名与属性名不同时的解决方案 - **解决方案**:当数据库...
以上是Mybatis的基本知识点,这份文档详细介绍了Mybatis的各个方面,包括使用方法、最佳实践以及常见问题的解决方案,对于理解和应用Mybatis有着极大的帮助。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
- **定义与定位**:myBatis.net并非纯粹的ORM(Object-Relational Mapping)框架,而是一种半自动化、高度灵活的持久层解决方案。相较于完全自动化的ORM框架(如NHibernate),myBatis.net给予开发者更大的控制权,...
在实际项目中,MyBatis常与Spring框架集成,构成Spring-MyBatis,提供了一个完整的解决方案,包括依赖注入、AOP(面向切面编程)和事务管理等功能,使得开发更加高效。 综上所述,MyBatis作为一个优秀的持久层框架...
- **Hibernate**: 作为 ORM 框架的代表,Hibernate 提供了一整套解决方案,包括对象关系映射、事务管理等。优点在于避免了大量的 SQL 代码编写,但缺点是可能不够灵活,特别是在大数据和高并发场景下。 - **...
在MyBatis中,除了使用`<select>`、`<insert>`、`<update>`和`<delete>`标签外,还可以通过`<parameterMap>`来组织多个参数。在`<parameterMap>`中定义参数集合,然后在具体操作中通过`<sqlparam>`引用。此外,...
在提供的压缩包子文件的文件名称列表中,我们看到了多个MyBatis的3.4.x版本,最高到3.4.6,这意味着这个包包含了从3.3.0到3.4.6的多个迭代版本。每个版本的细微差别可能包括错误修复、新功能的添加、性能提升等。...
在MyBatis中,集合(List)通常用于批处理或当查询结果需要映射到多个对象时。例如,使用`<foreach>`标签遍历List,构建动态SQL语句。例如: ```xml INSERT INTO users (name, email) VALUES (#{user.name}, #{...
10. **错误和异常**:文档中会列出常见的错误和异常,以及解决方案,帮助开发者诊断和解决问题。 这个离线文档对于MyBatis初学者和进阶者都非常有帮助,不仅覆盖了基本的使用方法,还深入到了高级特性和最佳实践。...
"springmvc_mybatis_多数据源"这个项目就是针对这种情况提供的一种解决方案。 首先,我们来看SpringMVC如何处理多数据源。在SpringMVC中,我们可以利用Spring的DataSourceTransactionManager和...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取...在实际项目中,MyBatis可以很好地与Spring框架结合,提供更完整的解决方案。
mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之...
总的来说,`mybatis-3-config.dtd`和`mybatis-3-mapper.dtd`是MyBatis框架的基石,它们定义了MyBatis配置文件的语法规则,帮助开发者构建出结构清晰、功能完备的持久层解决方案。通过对这两个DTD的深入理解和应用,...