1. 程式人生 > >老司機學習MyBatis之MyBatis如何使用Map處理引數

老司機學習MyBatis之MyBatis如何使用Map處理引數

一、前言

如果多個引數不是業務模型中的資料,沒有對應的POJO,為了方便,我們直接封裝成Map傳入。#{key}取出map中對應的值。

二、案例

在UserMapper.java增加查詢方法findUserByMapParam,如下:

/**
 * 封裝Map作為傳遞引數的載體
* @param user
* @return
 */
public User findUserByMapParam(Map<String,Object> map);

UserMapper.xml檔案修改如下:

<select id="findUserByMapParam"  parameterType="map"  resultType="com.queen.mybatis.bean.User">
	select id, loginId, userName, role, note from t_user where id = #{id}
</select>

增加測試方法testMapParam如下:

@Test
public void testMapParam() throws IOException {
	SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
	SqlSession openSession = sqlSessionFactory.openSession();
	try {
		UserMapper mapper = openSession.getMapper(UserMapper.class);
		Map<String,Object> map =new HashMap<String,Object>();
		map.put("id", 1);
		User user = mapper.findUserByMapParam(map);
		System.out.println(user);
	} finally {
		openSession.close();
	}
}

測試查詢功能,控制檯列印如下:

2017-08-05 09:05:00,041 [main] [com.queen.mybatis.mapper.UserMapper.findUserByMapParam]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user where id = ? 
2017-08-05 09:05:00,108 [main] [com.queen.mybatis.mapper.UserMapper.findUserByMapParam]-[DEBUG] ==> Parameters: 1(Integer)
2017-08-05 09:05:00,158 [main] [com.queen.mybatis.mapper.UserMapper.findUserByMapParam]-[DEBUG] <==      Total: 1
User [id=1, loginId=queen, userName=奎恩, role=海賊王副把手, note=專門負責提鞋的。。。]

=======歡迎大家拍磚,小手一抖,多多點贊喲!=======