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

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传递多个参数的更多相关文章

  1. mybatis之parameterType传递多个参数

    当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...

  2. Dao层向sql语句传递多个参数

    手动封装: serviceImpl层 Map<String, Object> params = new HashMap<String, Object>(2);params.pu ...

  3. MyBatis 示例-传递多个参数

    映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...

  4. Mybatis传递多个参数的几种方式

    顺序传参法 public User selectUser(String name, int deptId); <select id="selectUser" resultMa ...

  5. Mybatis传递多个参数进行SQL查询的用法

    当只向xxxMapper.xml文件中传递一个参数时,可以简单的用“_parameter”来接收xxxMapper.java传递进来的参数,并代入查询. 但是,如果在xxxMapper.java文件中 ...

  6. MyBatis框架使用 —— 传递多个参数的方式

    引言 目前,MyBatis的使用越来越普遍,也有一些公司使用Hibernate.使用MyBatis需要我们自己书写SQL语句,面对各种复杂的场景,SQL传递多参是很普遍的.如何传递多参应对不同的场景也 ...

  7. 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数

    [问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...

  8. C#使用结构来传递多个参数

    当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } clas ...

  9. 转载 C#中使用结构来传递多个参数

    C#中当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } c ...

随机推荐

  1. 关于cocopads 不能正确安装的问题

    通过几个网页 我搜到 看着几个网页就够了 绝对可以实现的 http://code4app.com/article/cocoapods-install-usage http://www.cnblogs. ...

  2. Swift - 37 - 值类型和引用类型的简单理解

    //: Playground - noun: a place where people can play import UIKit // 值类型:指的是当一个变量赋值给另外一个变量的时候, 是copy ...

  3. TreeView 数据绑定及选中命令处理

    昨天接近下班,一个群里面的网友,问treeView绑定后  选中命令怎么来处理,怎么没有效果,而且用MVVM的方式来写:快下班了本来想远程帮他看下,结果就说写个Demo给他看:再加上选中传参: 下面分 ...

  4. php改写session到数据库

    session改写mysql 在调用 session_start();的地方改用实例化本类即可new SessionDB(); session_set_save_handler( array($thi ...

  5. 手写总结:synchronized 和 lock 区别

    1.  synchronized 是jvm 层次的(可以会造成死锁), lock 可以写代码控制,一般在异常时在 finally 里可以 unlock 释放锁 2. lock 细度更细,synchro ...

  6. C++拾遗(十二)C++代码重用

    “has-a”关系 通常有两种方法实现: 1.被包含,本身是另一个类的对象. 2.私有或者保护继承. 主要讨论第二种方法,在继承时使用private关键字(或者不用任何关键字,默认就是私有的). 使用 ...

  7. 发布一款仿天猫产品放大镜JQuery插件

    效果如下图: 1.原图 2.放大镜效果: 插件源码如下: /* * * JQUERY 简洁无极放大镜插件-zoomer * Author:盛世游侠 * QQ:418873053 * Date:2013 ...

  8. JGraph

    php中JPGraph入门配置与应用 什么是PHP JPGraph?专门提供图表的类库.它使得作图变成了一件非常简单的事情.生成非美工人士生成的图表.二维码算法. 到官方网站下载.docportal ...

  9. Linux_shell条件判断if中的-a到-z的意思

    [ -a FILE ]  如果 FILE 存在则为真.  [ -b FILE ]  如果 FILE 存在且是一个块特殊文件则为真.  [ -c FILE ]  如果 FILE 存在且是一个字特殊文件则 ...

  10. 解决jsp页面乱码问题

    页面也需要设置转码的:页面:(.jsp) <%@ page language="java" import="java.util.*" pageEncodi ...