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"  >

       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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM