搜索

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 457|回复: 0

MyBatis传入多个参数的问题

[复制链接]

4775

主题

4899

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15232

社区QQ达人

发表于 2016-8-9 17:29:44 | 显示全部楼层 |阅读模式

据我目前接触到的传多个参数的方案有三种。

第一种方案

DAO层的函数方法

  1. Public User selectUser(String name,String area)
复制代码
对应的Mapper.xml
  1. <select id="selectUser" resultMap="BaseResultMap">
  2.     select  *  from user_user_t   where user_name = #{0} and user_area=#{1}
  3. </select>
复制代码

其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。

第二种方案

此方法采用Map传多参数.

Dao层的函数方法

  1. Public User selectUser(Map paramMap)
复制代码
对应的Mapper.xml
  1. <select id=" selectUser" resultMap="BaseResultMap">
  2.    select  *  from user_user_t   where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
  3. </select>
复制代码
Service层调用
  1. Private User xxxSelectUser(){
  2. Map paramMap=new hashMap();
  3. paramMap.put(“userName”,”对应具体的参数值”);
  4. paramMap.put(“userArea”,”对应具体的参数值”);
  5. User user=xxx. selectUser(paramMap);
复制代码

个人认为此方法不够直观,见到接口方法不能直接的知道要传的参数是什么。

第三种方案

Dao层的函数方法

  1. Public User selectUser(@param(“userName”)Stringname,@param(“userArea”)String area)
复制代码
对应的Mapper.xml
  1. <select id=" selectUser" resultMap="BaseResultMap">
  2.    select  *  from user_user_t   where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
  3. </select>
复制代码
个人觉得这种方法比较好,能让开发者看到dao层方法就知道该传什么样的参数,比较直观,个人推荐用此种方案。

分享到: 更多
友荐云推荐
射中网 www.shezhong.net 娄底街 www.loudijie.com 育儿之家 www.yuerso.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2020-1-20 22:52

© 2001-2011 Powered by Discuz! X3.1. Theme By Yeei!

快速回复 返回顶部 返回列表