2.7 Mybatis——返回值处理

目录

1.返回值为自定义对象类型

2. 返回值为自定义对象的一个属性

 3.返回值为自定义对象多个属性的值

        方法一:使用HashMap接收

        方法二:使用对象接收

         方法三:使用DTO设计模式接收

拓展:DTO设计模式

4.使用DTO设计模式接收两个表中的多个属性


1.返回值为自定义对象类型

2.7 Mybatis——返回值处理

2. 返回值为自定义对象的一个属性

返回值类型为具体返回属性的数据类型。

(1)Dao层方法:

2.7 Mybatis——返回值处理

 (2)Dao层对应的映射文件

2.7 Mybatis——返回值处理

 (3)运行测试

2.7 Mybatis——返回值处理

 3.返回值为自定义对象多个属性的值

        方法一:使用HashMap接收

dao层方法:

2.7 Mybatis——返回值处理

 dao层的映射文件:

 2.7 Mybatis——返回值处理

 运行测试:

2.7 Mybatis——返回值处理

测试结果:

2.7 Mybatis——返回值处理

        方法二:使用对象接收

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);
    }

  测试结果:

2.7 Mybatis——返回值处理

         方法三:使用DTO设计模式接收

首先设计一个临时新类,属性为要查询的目标属性。

2.7 Mybatis——返回值处理

dao层方法:

2.7 Mybatis——返回值处理

 方法对应的映射文件:

2.7 Mybatis——返回值处理

运行测试:

 2.7 Mybatis——返回值处理

运行结果:

2.7 Mybatis——返回值处理

 拓展: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);
}

测试结果:

2.7 Mybatis——返回值处理

上一篇:我们为什么需要DTO(数据传输对象)


下一篇:基于python的信用卡评分模型(German Credit德国信用数据集)