- resultType&resultMap的使用条件
- 当表的字段与类的属性一致时,也就是类的属性与表的字段一一对应时则使用resultType否则使用resultMap。
- 如果输出简单类型、POJO单个对象、输出POJO列表则使用resultMap。
- 代码实现查询个数
- 接口中的方法
/** * 查询user的个数 * @param vo * @return */ public int findUserCount(UserQueryVo vo);
- 映射文件的配置
<select id="findUserCount" parameterType="userQueryVo" resultType="int"> SELECT COUNT(*) FROM user WHERE sex = #{user.sex} </select>
- 实现方法
@Test public void test1(){ UserMapper userMapper = session.getMapper(UserMapper.class); //获取数据 //通过模型的包装类来查询用户 UserQueryVo query = new UserQueryVo(); User user = new User(); user.setSex("2"); query.setUser(user); int count = userMapper.findUserCount(query); System.out.println("女性的个数为:"+count); }
- 当表查询到的值不再与类的属性值一一对应时使用resultMap
- 除了在接口中写对应的方法,配置映射文件以及实现对应的方法之外,还需要设置返回数据resultMap
- 配置文件代码
<resultMap id="userResultMap" type="com.Marsoft.model.User"> <id property="id" column="id_"></id> <result property="username" column="username_"></result> <result property="sex" column="sex_"></result> <result property="birthday" column="birthday_"></result> <result property="address" column="address_"></result> </resultMap> <select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap"> SELECT id id_, username username_, sex sex_, birthday birthday_, address address_ FROM USER WHERE id = #{id}; </select>
- 其中resultMap标签的id是select标签resultMap属性的值,这里是根据id进行查询,所以表格的其它属性都在result标签中。
- type的的值是具体的某一个实体类
- result标签中的property的值对应的是实体类中的属性
- 接口中的方法
/** * 查询的结果作为resultMap传出 * @param id * @return */ public User findUserByIdResultMap(int id);
- 实现方法
@Test public void test2(){ UserMapper userMapper = session.getMapper(UserMapper.class); //获取数据 //通过模型的包装类来查询用户 User user = userMapper.findUserByIdResultMap(1); System.out.println(user); }
- 除了在接口中写对应的方法,配置映射文件以及实现对应的方法之外,还需要设置返回数据resultMap