mybatis传多参数的问题

本文介绍在IBatis中如何处理多参数SQL语句,包括使用注解改变参数名称、处理模糊匹配等问题,并展示如何通过Map传递多个参数以实现灵活的数据检索。


问题:在做数据库操作的时候,经常要传多参数进sql语句,以前版本的ibatis,不支持直接传多个参数进来,只能压入对象或者HashMap中,这样实在不是很方便。

在现在的版本,终于有了支持。

官方文档: 
你可以传递多个参数给一个映射器方法。如果你这样做了,默认情况下它们将会以它们 
在参数列表中的位置来命名,比如:#{0},#{1} (位置从0开始)等。如果你想改变参数的名称(只在多参数情况下),

那么你可以在参数上使用@Param(“paramName”)注解。在用到like进行模糊匹配的sql语句里,用下标的方式会报错,得用给参数重命名的方式才行。

 例子: 

public AddrInfo getAddrInfo(@Param("corpId")int corpId,@Param("addrId")int addrId);

 xml配置这样写:

 <select id="getAddrInfo"  resultMap="com.xxx.xxx.AddrInfo">
        SELECT * FROM addr__info where addr_id=#{addrId} and corp_id=#{corpId}
</select>

 以前在<select>语句中要带parameterType的,如:

parameterType 可以是别名或完全限定名 ,map->java.util.Map,这两个都是可以的 
  --> 
  <selectid="selectBlogByMap"parameterType="map"resultType="Blog"
      SELECT t.ID, t.title, t.content 
        FROM blog t 
       WHERE t.title = #{h_title} 
         AND t.content =#{h_content} 
  </select> 
  /**
    * 通过Map传递多个参数
    */ 
  @Test 
   public void testSelectByMap() { 
       SqlSession session = sqlSessionFactory.openSession(); 
       Map<String, Object> param=new HashMap<String, Object>(); 
       param.put("h_title""oracle"); 
       param.put("h_content""使用序列!"); 
       Blog blog = (Blog)session.selectOne("cn.enjoylife.BlogMapper.selectBlogByMap",param); 
       session.close(); 
       System.out.println("blog title:"+blog.getTitle()); 
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值