MyBatis的输出类型resultType

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

输出简单类型

需求:查询用户表数据条数

示例代码(UserMapper.xml):

<!-- 查询用户表数据条数 -->
<select id="queryUserCount" resultType="int">
	select count(*) from
	`user`
</select>

示例代码(UserMapper.java):

int queryUserCount();

示例代码(UserMapperTest):

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

	// 使用userMapper执行查询用户数据条数
	int count = userMapper.queryUserCount();
	System.out.println(count);

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

注意:输出简单类型必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型。

输出pojo对象

示例代码(UserMapper.xml):

<!-- 通过ID查询一个用户 -->
<select id="findUserById" parameterType="Integer" resultType="User">
	select * from user where id = #{v}
</select>

示例代码(UserMapper.java):

public User findUserById(Integer id);

示例代码(UserMapperTest.java):

@Test
public void findUserByIdTest() throws Exception {
	// 加载核心配置文件
	String resource = "sqlMapConfig.xml";
	InputStream in = Resources.getResourceAsStream(resource);
	// 创建SqlSessionFactory
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
	// 创建SqlSession
	SqlSession sqlSession = sqlSessionFactory.openSession();

	// SqlSEssion帮我生成一个实现类 (给接口)
	UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

	User user = userMapper.findUserById(10);
	System.out.println(user);
}

输出POJO列表

示例代码(UserMapper.xml):

<!-- 根据用户名称模糊查询用户列表 -->
<select id="findUserByUsername" parameterType="String" resultType="ren.oliver.mybatis.pojo.User">
	select * from user where username like "%"#{haha}"%"
</select>

示例代码(UserMapper.java):

// 根据用户名称模糊查询用户列表
public List<User> findUserByUsername(String username);

示例代码(UserMapperTest.java):

// 根据用户名称模糊查询用户列表
@Test
public void findUserByUsernameTest() throws Exception {
	// 加载核心配置文件
	String resource = "sqlMapConfig.xml";
	InputStream in = Resources.getResourceAsStream(resource);
	// 创建SqlSessionFactory
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
	// 创建SqlSession
	SqlSession sqlSession = sqlSessionFactory.openSession();

	// SqlSEssion帮我生成一个实现类 (给接口)
	UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

	List<User> users = userMapper.findUserByUsername("五");
	for (User user : users) {
		System.out.println(user);
	}
}

标签: none