MyBatis的输入类型parameterType

本文记录Java学习过程中遇到的MyBatis的输入类型parameterType~

传递简单类型

使用#{}占位符,或者${}进行sql拼接。

传递POJO对象

MyBatis使用OGNL表达式解析对象字段的值,#{}或者${}括号中的值为POJO属性名称。

传递POJO包装对象

开发中通过可以使用POJO传递查询条件。

查询条件可能是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如查询用户信息的时候,将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。

包装对象:POJO类中的一个属性是另外一个POJO。

示例代码(查询条件类QueryVo):

public class QueryVo {

	// 包含其他的pojo
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
}

示例代码(SQL语句):

SELECT * FROM user WHERE username LIKE '%张%'

示例代码(UserMapper.xml):

<!-- 使用包装类型查询用户 -->
<select id="queryUserByQueryVo" parameterType="queryVo" resultType="user">
	SELECT * FROM user WHERE username LIKE '%${user.username}%'
</select>

示例代码(UserMapper接口):

List<User> queryUserByQueryVo(QueryVo queryVo);

示例代码(UserMapperTest):

@Test
public void testQueryUserByQueryVo() {
	// mybatis和spring整合,整合之后,交给spring管理
	SqlSession sqlSession = this.sqlSessionFactory.openSession();
	// 创建Mapper接口的动态代理对象,整合之后,交给spring管理
	UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

	// 使用userMapper执行查询,使用包装对象
	QueryVo queryVo = new QueryVo();
	// 设置user条件
	User user = new User();
	user.setUsername("张");
	// 设置到包装对象中
	queryVo.setUser(user);

	// 执行查询
	List<User> list = userMapper.queryUserByQueryVo(queryVo);
	for (User u : list) {
		System.out.println(u);
	}

	// mybatis和spring整合,整合之后,交给spring管理
	sqlSession.close();
}

标签: none