课时6 输出参数为简单类型、对象类型、HashMap及resultMap使用

.1)resultType

  (1)简单类型(8个基本类型加String)

  (2)输出类型为实体对象类型

  (3) 输出参数为实体对象类型的集合 :虽然输出类型为集合,但是resultType依然写 集合的元素类型  (resultType="student")

  (4)输出参数为HashMap

<!--    别名作为Map的key-->
    <select id="queryStudentOutHashMap" resultType="HashMap" parameterType="int">
        select stuName "name",stuAge "age" from student where stuno=#{xx}
    </select>

    --HashMap本身就是一个集合,可以存放多个元素,

    但是根据提示发现 返回值为HashMap的时候,查询的结果只能是一个学生(no,name);

    结论---》:一个HashMap对应一个学生的多个元素(多个属性) (一个map一个学生)

    如果非要改成输出为多个学生 改进如下:

<!--    查询返回值为集合map-->
    <select id="queryAllStudentOutHashMap" resultType="HashMap">
        select stuName "name",stuAge "age" from student
    </select>
 /**
     * 查询所有学生并且返回值为Map集合
     * @return
     */
    List<Map<String ,Object>> queryAllStudentOutHashMap();
  public static void queryAllStudentOutHashMap() throws IOException {
        Reader reader = Resources.getResourceAsReader("config.xml");
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
        SqlSession session=sessionFactory.openSession();
        IStudentDao iStudentDao=session.getMapper(IStudentDao.class);
        List<Map<String, Object>> map = iStudentDao.queryAllStudentOutHashMap();
        System.out.println(map);
        session.close();
        reader.close();
    }

.2)resultMap

  (1)实体类的属性表中的字段:类型,名字不同时(stuno,id)  

   注意:当属姓名和字段名不一致时,除了resultMap以外,还可以使用resultType+HashMap

     1.resultMap处理属性和字段不一致

<!--    使用resultMap返回-->
    <select id="queryAllStudentByidMap" resultMap="queryAllStudentByidMaps" parameterType="int">
        select id,name from student where id=#{xx}
    </select>

    <resultMap id="queryAllStudentByidMaps" type="student">
        <id property="stuNo" column="id"></id>
        <result property="stuName" column="name"></result>
    </resultMap>

     2.resultType处理属性和字段名不一致

<!--使用resultType返回-->
    <select id="queryAllStudentByidWithType" resultType="student" parameterType="int">
        select id "stuNo",name "stuName" from student where id=#{xx}
    </select>

       select 表中的字段名 “类中的属性名” from ...来指定属性名和字段名的关系

       注意:如果10个字段 ,但发现 某一个属性结果始终为默认值(0,0.0,null) ,则可能是表的字段和类的属性 名字写错了

 

posted @ 2020-03-10 13:46  何邦柱  阅读(536)  评论(1编辑  收藏  举报