`

Mybatis传多个参数(三种解决方案)

 
阅读更多
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传递多个参数的解决办法(三种)

    在MyBatis框架中,当需要传递多个参数时,通常有三种常见的解决办法。这些方法各有优缺点,选择哪种取决于个人喜好和项目需求。下面将详细阐述这三种解决方案。 **第一种方案:使用位置参数** 在DAO层,你可以定义...

    spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目

    "spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目"是针对这种需求的一个解决方案,旨在提供一种灵活且动态的数据源切换机制。 首先,Spring框架作为Java领域中最受欢迎的应用框架之一,其强大...

    关于MyBatis参数传入#{index}的问题的解决方案【源码】

    在使用MyBatis进行数据库操作时,我们经常会遇到需要传递多个参数的情况。在这个问题中,开发者遇到了一个关于如何正确传入参数#{index}的问题。在MyBatis中,#{index}是参数占位符,它用于动态SQL的拼接,但具体...

    jsq+mybatis+mysql中文乱码解决方案

    JSQ+MyBatis+MySQL 中文乱码解决方案 中文乱码是 JSQ、MyBatis 和 MySQL 集成时常见的问题,解决这个问题需要从多方面入手。本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 ...

    Mybatis传递多个参数进行SQL查询的用法

    在处理多参数查询时,MyBatis提供了多种解决方案,包括通过Map和JavaBean传递参数。下面将详细介绍这两种方法。 ### 1. 通过Map传递多个参数 当需要传递多个参数时,可以使用`Map, Object&gt;`作为方法的参数。在Java...

    mybatis乱码的解决方法

    这里主要探讨的是关于MyBatis(以及它的前身iBatis)处理GBK和ISO-8859-1编码时出现的问题及其解决方案。 首先,我们要了解字符编码的基础知识。GBK是汉字的扩展GBK编码,包含了大部分简体中文字符,而ISO-8859-1是...

    mybatis多条件查询处理方案(查询条件为数据库字段非传递参数).pdf

    在MyBatis中,多条件查询是常见的需求,特别是在数据检索和过滤时。通常,我们会根据传递的参数来决定查询的条件。然而,有时我们可能需要根据数据库字段本身的...在实际应用中,应根据具体情况选择最适合的解决方案。

    mybatis笔记

    #### 十一、MyBatis传入多个参数时的处理方式 - **参数处理**:可以使用`@Param`注解为每个参数指定名称,也可以直接使用位置参数或Map类型。 #### 十二、列名与属性名不同时的解决方案 - **解决方案**:当数据库...

    Mybatis文档(中英)

    以上是Mybatis的基本知识点,这份文档详细介绍了Mybatis的各个方面,包括使用方法、最佳实践以及常见问题的解决方案,对于理解和应用Mybatis有着极大的帮助。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    myBatis.net详细手册

    - **定义与定位**:myBatis.net并非纯粹的ORM(Object-Relational Mapping)框架,而是一种半自动化、高度灵活的持久层解决方案。相较于完全自动化的ORM框架(如NHibernate),myBatis.net给予开发者更大的控制权,...

    mybatis jar包

    在实际项目中,MyBatis常与Spring框架集成,构成Spring-MyBatis,提供了一个完整的解决方案,包括依赖注入、AOP(面向切面编程)和事务管理等功能,使得开发更加高效。 综上所述,MyBatis作为一个优秀的持久层框架...

    Mybatis讲义

    - **Hibernate**: 作为 ORM 框架的代表,Hibernate 提供了一整套解决方案,包括对象关系映射、事务管理等。优点在于避免了大量的 SQL 代码编写,但缺点是可能不够灵活,特别是在大数据和高并发场景下。 - **...

    《一头扎进MyBatis3》第八讲 Mybatis杂项

    在MyBatis中,除了使用`&lt;select&gt;`、`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`标签外,还可以通过`&lt;parameterMap&gt;`来组织多个参数。在`&lt;parameterMap&gt;`中定义参数集合,然后在具体操作中通过`&lt;sqlparam&gt;`引用。此外,...

    MyBatis3.3

    在提供的压缩包子文件的文件名称列表中,我们看到了多个MyBatis的3.4.x版本,最高到3.4.6,这意味着这个包包含了从3.3.0到3.4.6的多个迭代版本。每个版本的细微差别可能包括错误修复、新功能的添加、性能提升等。...

    mybatis collection list string

    在MyBatis中,集合(List)通常用于批处理或当查询结果需要映射到多个对象时。例如,使用`&lt;foreach&gt;`标签遍历List,构建动态SQL语句。例如: ```xml INSERT INTO users (name, email) VALUES (#{user.name}, #{...

    mybatis中文离线文档

    10. **错误和异常**:文档中会列出常见的错误和异常,以及解决方案,帮助开发者诊断和解决问题。 这个离线文档对于MyBatis初学者和进阶者都非常有帮助,不仅覆盖了基本的使用方法,还深入到了高级特性和最佳实践。...

    springmvc_mybatis_多数据源

    "springmvc_mybatis_多数据源"这个项目就是针对这种情况提供的一种解决方案。 首先,我们来看SpringMVC如何处理多数据源。在SpringMVC中,我们可以利用Spring的DataSourceTransactionManager和...

    mybatis-3.4.6.rar

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取...在实际项目中,MyBatis可以很好地与Spring框架结合,提供更完整的解决方案。

    springmybatis

    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-3-config.dtd`和`mybatis-3-mapper.dtd`是MyBatis框架的基石,它们定义了MyBatis配置文件的语法规则,帮助开发者构建出结构清晰、功能完备的持久层解决方案。通过对这两个DTD的深入理解和应用,...

Global site tag (gtag.js) - Google Analytics