mybatis之parameterType传递多个参数

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

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"  >
   <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> <span style="color: #ff00ff;">user</span> u <span style="color: #0000ff;">where</span> u.<span style="color: #ff00ff;">user_name</span><span style="color: #808080;">=</span>#{userName} <span style="color: #808080;">and</span> u.pass_word<span style="color: #808080;">=</span><span style="color: #000000;">#{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>

原文地址:https://www.cnblogs.com/jpfss/p/10254669.html