mybatis传多参数的问题



问题:在做数据库操作的时候,经常要传多参数进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()); 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值