mybatis补充教程之二:传递多个参数的方法(Multiple parameters)

在用mybatis 做查询的时候,通常会传递多个参数,一般来说,这种情况下有两种解决办法:
1, 利用 hashMap 去做。
2, 利用 mybatis 自身的多个参数传递方式去做。分别补充如下:

利用hashMap 传递多个参数
比如有如下语句:
程序代码 程序代码

<select id="selectByDate" parameterType="map" resultMap="campaignStats">
<![CDATA[
   Select * FROM CampaignStats Where statsDate >= #{start} AND statsDate <= #{end}
]]>
</select>

对应的java 代码为
程序代码 程序代码

public List<DpCampaignStats> selectByDate(Date start, Date end){
    SqlSession session = sqlSessionFactory.openSession();
    try {
        Map<String, Date> map = new HashMap<String, Date>();
        map.put("start", start);
        map.put("end", end);
        List<DpCampaignStats> list = session.selectList("DpCampaignStats.selectByDate", map);
        return list;
    } finally {
        session.close();
    }
}

只是第一种方法,当然还有还有如下方法

mybatis 自带的 多个参数传递方法。
同样的 语句
程序代码 程序代码

<select id="selectByDate"  resultMap="campaignStats">
<![CDATA[
   Select * FROM CampaignStats Where statsDate >= #{param1} AND statsDate <= #{param2}
]]>
</select>

请注意,这个时候没有 parameterType, 但用到了类似 #{param1} 类似的参数. 同样 java 代码也需要做出改变
程序代码 程序代码

public List<DpCampaignStats> selectByDate(Date start, Date end){
    SqlSession session = sqlSessionFactory.openSession();
    try {      
        List<DpCampaignStats> list = session.selectList("DpCampaignStats.selectByDate", start,end);
        return list;
    } finally {
        session.close();
    }
}


推荐使用hashMap 来传递多个参数.

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2013-11-19 08:05 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: mybatis
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复N3verL4nd[2017-07-03 09:18 AM | del]
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'start' not found. Available parameters are [arg1, arg0, param1, param2]
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.