目录
1.返回值为自定义对象类型
2. 返回值为自定义对象的一个属性
3.返回值为自定义对象多个属性的值
HashMap接收
对象接收
DTO设计模式接收
拓展:DTO设计模式
4.使用DTO设计模式接收两个表中的多个属性
1.返回值为自定义对象类型
2. 返回值为自定义对象的一个属性
返回值类型为具体返回属性的数据类型。
(1)Dao层方法:
(2)Dao层对应的映射文件:
(3)运行测试:
3.返回值为自定义对象多个属性的值
HashMap接收
dao层方法:
dao层的映射文件:
运行测试:
测试结果:
对象接收
dao层方法:
//返回值为自定义对象多个属性的值——使用自定义对象User接收 User getUnameAgeById2(int id);
对应映射文件
<!--返回值为自定义对象多个属性的值——使用自定义对象User接收--> <select id="getUnameAgeById2" resultType="com.zx.pojo.User"> select uname,age from user where id=#{id} </select>
运行测试:
@Test //User对象接收会将不需要的属性也展示出来,不过值为null public void getUnameAgeById2Test(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserDao userDao = sqlSession.getMapper(UserDao.class); User user = userDao.getUnameAgeById2(9); System.out.println(user); }
测试结果:
DTO设计模式接收
首先设计一个临时新类,属性为要查询的目标属性。
dao层方法:
方法对应的映射文件:
运行测试:
运行结果:
拓展:DTO设计模式
拓展:DTO设计模式——将需要的查询的属性临时封装在一个新的实体类,作为属性建立set、get方法,重写toString方便打印。
4.使用DTO设计模式接收两个表中的多个属性
实例:查询user表的用户名(uname)和年龄(age),以及groups表对应的组名(gname)。
(1)新建一个临时新类,属性为所要查询到目标属性,写出对应的set、get方法,重写toString方法。
public class Temp {
private String uname;//user表属性
private int age;
private String gname;//groups表属性
}
(2)dao层对应方法
//返回值为两个表中的属性——使用DTO设计模式,查询user表和groups表的属性
Temp getUnameAgeGnameById(int id);
(3) 方法对应的映射文件:
<!--返回值为两个表中的属性——使用DTO设计模式-->
<select id="getUnameAgeGnameById" resultType="com.zx.pojo.Temp">
SELECT uname,age,gname from user u,groups g where u.gid=g.gid and u.id=#{id};
</select>
(4)运行测试:
@Test
public void getUnameAgeGnameByIdTest(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
Temp temp = userDao.getUnameAgeGnameById(9);
System.out.println(temp);
}
测试结果: