mybatis中的多参传递,包含实体的多参传递

最近做的项目里面有一个包含实体的多参传递,于是上网查了一些资料,发现mybatis中的多参传递的资料是比较多的,但是包含实体的多参传递就比较少了。查找资料后终于解决,写个日志总结下,方便日后使用。

多参传递一般有三种方法:

以下三种方法内容来自http://www.2cto.com/database/201409/338155.html

第一种方案 

DAO层的函数方法 

?
1
Public User selectUser(String name, String area);


对应的Mapper.xml  
?
1
2
3
< 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层的函数方法

?
1
Public User selectUser(Map paramMap);
对应的Mapper.xml
?
1
2
3
< select id= " selectUser" resultMap= "BaseResultMap" >
    select  from user_user_t   where user_name = #{userName,jdbcType= VARCHAR } and user_area=#{userArea,jdbcType= VARCHAR }
</ select >

Service层调用

?
1
2
3
4
5
Private User xxxSelectUser(){
Map paramMap=new hashMap();
paramMap.put(“userName”,”对应具体的参数值”);
paramMap.put(“userArea”,”对应具体的参数值”);
User user =xxx. selectUser(paramMap);}

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

第三种方案

Dao层的函数方法
?
1
Public User selectUser(@param("user")User user, @param(“userName”)String name,@param(“userArea”)String area);
对应的Mapper.xml
?
1
2
3
< select id= " selectUser" resultMap= "BaseResultMap" >
    select  from user_user_t   where user_name = #{userName,jdbcType= VARCHAR } and user_area=#{userArea,jdbcType= VARCHAR }
</ select

个人觉得这种方法比较好,能让开发者看到dao层方法就知道该传什么样的参数,比较直观,个人推荐用此种方案。

包含实体的多参传递:

我使用的是第三种方法解决的这个问题,也就是加@Param注解来解决,我的是时间区间的判断,具体代码实例如下:

Dao层的函数方法
?
1
Public User selectUser(@param("user")User user, @param(“start”)String start,@param(“end”)String end);
对应的Mapper.xml
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
< select id= " selectUser" resultMap= "BaseResultMap" >
    select  from user u  
<where>
<if test="user.userId  != null and user.userId != ''">
u.user_id = #{user.userId}
</if>
          <if test="start != null and start != ''">
             
and u.created &gt;= start                
          </if> 
          <if test="end != null and end != ''">
             
and u.created &lt;= end                
          </if>
</where>
</ select

其中,黑色粗体u代表数据库表user,红色粗体user代表传入的user对象,即@param("user")中的user。我使用了mybatis中的where标签和if标签,有兴趣的话请参考http://blog.csdn.net/zenson_g/article/details/10137665。记得一定不要忘记and关键字。

新手,不喜勿喷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值