mybati之parameterType传递多个参数

Posted 小黑妹007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybati之parameterType传递多个参数相关的知识,希望对你有一定的参考价值。

mybati之parameterType传递多个参数

 
mybati之parameterType传递多个参数

当在查询的时候需要传入多个参数的时候该怎么办呢:


1,封装成一个Model对象,底层HashMap还是一个

 

[java] view plain copy
 
  1. User user=new User();  
  2.   
  3. user.setUserName("zhangsan");  
  4.   
  5. user.setPassword("123456");  
  6.   
  7. queryUserByuserNameAndPass(user);//为返回值类型为User  

[html] view plain copy
 
  1. <select id="queryUserByuserNameAndPass"  resultType="User" parameterType="com.j1.User"  >  
  2.   
  3.        select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}  
  4.   
  5. </select>  


 

2,使用HashMap封装

 

[java] view plain copy
 
  1. //使用HashMap定义:  
  2.   
  3. HashMap <String,Object> map=new HashMap<String,Object>();  
  4.   
  5. map.put("userName","zhangsan");  
  6.   
  7. map.put("password","123456");  
[java] view plain copy
 
  1. queryUserByuserNameAndPass(map);//为返回值类型为User  

[html] view plain copy
 
  1. //sql 如下:  
  2.   
  3. <select id="queryUserByuserNameAndPass"  resultType="User"  parameterType="Map" >  
  4.   
  5. select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}  
  6.   
  7. </select>  

3,使用注解,@param

 

 

[java] view plain copy
 
  1. queryUserByuserNameAndPass(@param(‘‘userName")String userName,@param("password")String password)  

[html] view plain copy
 
  1. <select id="queryUserByuserNameAndPass"  resultType="User">  
  2.   
  3. select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}  
  4.   
  5. </select>  

[html] view plain copy
 
  1. queryUserByuserNameAndPass(String userName,String PassWord);  //返回值类型为Usre    
  2. //sql  
  3.   
  4. <select id="queryUserByuserNameAndPass"  resultType="User">  
  5. select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//会报错的  
  6. </select>  
  7.   
  8. <select id="queryUserByuserNameAndPass"  resultType="User">  
  9. select * from user u where u.user_name=#{0} and u.pass_word=#{1}//运行成功但是,可读性不高  
  10. </select>  
  11.   
  12. //parameterType 参数类型可以是基本数据类型(int,String,long),可以是Model对象,也可以是Map;  
  13.   
  14. 1,基本数据类型:  
  15.   
  16. @Override  
  17. public void deleteUserById(Long id) {  
  18. SqlSession sqlSession = sqlSessionFactory.openSession(true);  
  19. sqlSession.delete("cn.itcast.mybatis.user.deleteUserById", id);  
  20. }  
  21.   
  22. //sql  
  23. <delete id="deleteUserById" parameterType="java.lang.Long">  
  24.       DELETE FROM tb_user WHERE id = #{id}  
  25. </delete>  
  26.    
  27.   
  28. 2,Model对象  
  29.   
  30. //java代码:  
  31. @Override  
  32. public void saveUser(User user) {  
  33. SqlSession sqlSession = sqlSessionFactory.openSession(true);  
  34. sqlSession.insert("cn.itcast.mybatis.user.saveUser", user);  
  35. }  
  36.   
  37. @Override  
  38. public void updateUser(User user) {  
  39. SqlSession sqlSession = sqlSessionFactory.openSession(true);  
  40. sqlSession.update("cn.itcast.mybatis.user.updateUser", user);  
  41. }  
  42.   
  43. //sql  
  44. <update id="updateUser" parameterType="cn.itcast.mybatis.pojo.User">  
  45. UPDATE tb_user  
  46. SET  
  47. password = #{password},  
  48. name = #{name},  
  49. age = #{age},  
  50. sex = #{sex},  
  51. birthday = #{birthday},  
  52. updated = NOW()  
  53. WHERE  
  54. id = #{id};  
  55. </update>   
  56.   
  57. 3.map  
  58.   
  59. //java  
  60. HashMap <String,Objectmap=new HashMap<String,Object>();  
  61. map.put("userName","zhangsan");  
  62. map.put("password","123456");  
  63. queryUserByuserNameAndPass(map);//为返回值类型为User  
  64.    
  65. //sql 如下:  
  66.   
  67. <select id="queryUserByuserNameAndPass"  resultType="User">  
  68.   
  69. select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//  
  70.   
  71. </select>  

以上是关于mybati之parameterType传递多个参数的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis (ParameterType) 如何传递多个不同类型的参数

mybatis传参包含字符串和日期,parametertype写啥

关于mybatis的使用之怎么传递参数总结

MyBatis应用开发映射之参数绑定parameterType

mybatis中怎么传参数可以提高查询效率

mybatis传递多个参数值(转)