zoukankan      html  css  js  c++  java
  • 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>  
  • 相关阅读:
    极高效内存池实现 (cpu-cache)
    gles2.0环境的在windows上的建立
    使用OpenGL绘制 shapefile文件 完成最基本的gis操作
    纯C++安卓开发 (ndk)系列之 ---- 常见问题
    如何用 纯C++(ndk)开发安卓应用 ?
    Android-NDK处理用户交互事件
    图解-安卓中调用OpenGL
    图解安卓-c++开发-通过java 调用c++ jni的使用
    搭建安卓开发环境 hello world andriod
    关于socket通讯,如何才能高效?
  • 原文地址:https://www.cnblogs.com/erma0-007/p/8647428.html
Copyright © 2011-2022 走看看