mybati之parameterType传递多个参数
2016-09-16 20:47
155 查看
当在查询的时候需要传入多个参数的时候该怎么办呢:
1,封装成一个Model对象,底层HashMap还是一个
2,使用HashMap封装
//sql 如下:
3,使用注解,@param
//sql
改为如下:
//parameterType 参数类型可以是基本数据类型(int,String,long),可以是Model对象,也可以是Map;
1,基本数据类型:
//sql
2,Model对象
//sql
3.map
//sql 如下:
1,封装成一个Model对象,底层HashMap还是一个
User user=new User(); user.setUserName("zhangsan"); user.setPassword("123456"); queryUserByuserNameAndPass(user);//为返回值类型为User
<select id="queryUserByuserNameAndPass" resultType="User" parameterType="com.j1.User" > select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord} </select>
2,使用HashMap封装
//使用HashMap定义: HashMap <String,Object> map=new HashMap<String,Object>(); map.put("userName","zhangsan"); map.put("password","123456"); queryUserByuserNameAndPass(map);//为返回值类型为User
//sql 如下:
<select id="queryUserByuserNameAndPass" resultType="User" parameterType="Map" > select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord} </select>
3,使用注解,@param
queryUserByuserNameAndPass(@param(''userName")String userName,@param("password")String password)
<select id="queryUserByuserNameAndPass" resultType="User"> select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}// </select>
queryUserByuserNameAndPass(String userName,String PassWord); //返回值类型为Usre
//sql
<select id="queryUserByuserNameAndPass" resultType="User"> select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//会报错的 </select>
改为如下:
<select id="queryUserByuserNameAndPass" resultType="User"> select * from user u where u.user_name=#{0} and u.pass_word=#{1}//运行成功但是,可读性不高 </select>
//parameterType 参数类型可以是基本数据类型(int,String,long),可以是Model对象,也可以是Map;
1,基本数据类型:
//java代码 @Override public void deleteUserById(Long id) { SqlSession sqlSession = sqlSessionFactory.openSession(true); sqlSession.delete("cn.itcast.mybatis.user.deleteUserById", id); }
//sql
<delete id="deleteUserById" parameterType="java.lang.Long"> DELETE FROM tb_user WHERE id = #{id} </delete>
2,Model对象
//java代码: @Override public void saveUser(User user) { SqlSession sqlSession = sqlSessionFactory.openSession(true); sqlSession.insert("cn.itcast.mybatis.user.saveUser", user); } @Override public void updateUser(User user) { SqlSession sqlSession = sqlSessionFactory.openSession(true); sqlSession.update("cn.itcast.mybatis.user.updateUser", user); }
//sql
<update id="updateUser" parameterType="cn.itcast.mybatis.pojo.User"> UPDATE tb_user SET password = #{password}, name = #{name}, age = #{age}, sex = #{sex}, birthday = #{birthday}, updated = NOW() WHERE id = #{id}; </update>
3.map
//java HashMap <String,Object> map=new HashMap<String,Object>(); map.put("userName","zhangsan"); map.put("password","123456"); queryUserByuserNameAndPass(map);//为返回值类型为User
//sql 如下:
<select id="queryUserByuserNameAndPass" resultType="User"> select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}// </select>
相关文章推荐
- mybati之parameterType传递多个参数
- mybatis中关于传入参数parameterType
- mybatis 之 parameterType="HashMap"参数包含list
- 数据库批量操作中SqlParameter参数传递的问题
- c++无类型参数模板(non-type template parameter)
- json传递中文乱码解决方法以及解决request.getParameter()获取参数为乱码的问题
- MyBatis的传入参数parameterType类型
- HttpServletRequest getParameterValues 接收get/post方式传递的多值参数
- $.ajax()post方式请求参数无法传递,request.getParameter()无法获取
- 值类型与引用类型(特殊的string) Typeof和GetType() 静态和非静态使用 参数传递 相关知识
- 信号槽传递非Qt库类型参数时,出现QObject::connect: Cannot queue arguments of type 'QUuid'(Make sure 'string' is regi
- forward请求转发,param参数传递以及request.getParameter图文讲解
- 优雅的传递boolean type 参数
- struts.xml 使用 type="redirect" 和type="redirectaction" 传递参数
- 将枚举作为参数,迭代枚举。Passing Enum type as a parameter
- C#中的参数传递:值类型(value type)和引用类型(reference type)
- SpringMVC 数组类型的参数: Cannot generate variable name for non-typed Collection parameter type
- Post请求传递参数时,最好在请求头加上item.ContentType = "application/x-www-form-urlencoded";
- parameter的参数传递功能以及一个很容易被忽略的小问题
- struts.xml 使用 type="redirect" 和type="redirectaction" 传递参数