您的位置:首页 > 其它

mybatis传多参数的问题

2014-11-12 15:44 169 查看

问题:在做数据库操作的时候,经常要传多参数进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()); 

 
  


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: