美文网首页
MyBatis多表查询(2.2)

MyBatis多表查询(2.2)

作者: 凡哥爱丽姐 | 来源:发表于2020-06-12 17:17 被阅读0次

两表联查(多对一)

注:数据库表以及实体类见上一章节

1、创建StudentAndGradeDao接口中的方法

    //根据学生id查找学生信息以及对应的班级信息
    public Student findByStudentId(int sid);

2、配置StudentAndGradeDaoMapper.xml映射文件信息并将其配置到mybatis-config.xml

<resultMap id="a2" type="Student">
        <id property="sid" column="sid"></id>
        <result property="sname" column="sname"></result>
        <association property="grade" javaType="Grade">
            <id property="cid" column="cid"></id>
            <result property="cname" column="cname">
</result>
        </association>
</resultMap>

<select id="findByStudentId" resultMap="a2">
        select * from grade,student where student.cid=grade.cid and student.sid=#{sid} </select>

mybatis-config.xml获取对应的映射文件

<mapper resource="Mapper/StudentAndGradeDaoMapper.xml"></mapper>

3、添加测试类

import com.fan.dao.StudentAndGradeDao;
import com.fan.entity.Student;
import com.fan.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;

public class Test3 {
    public static void main(String[] args) {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        StudentAndGradeDao mapper = sqlSession.getMapper(StudentAndGradeDao.class);
        Student byStudentId = mapper.findByStudentId(1);
        System.out.println(byStudentId.getSname()+"是"+byStudentId.getGrade().getCname()+"学生");
    }
}

测试结果如下:

测试结果

总结(两表联查:一对多和多对一 )

格式:
   一对多:
   <resultMap type="" id="自定义名称">  
         <id property="java 属性名" column="列名" /><!--主键列-->  
         <result property="java 属性名" column="列名" />  
         <collection property="属性名" ofType="java 类型">  
             <id property="属性名" column="列名" />  
             <result property="属性名" column="列名" />  
         </collection>  
     </resultMap>  
例:
 <resultMap id="a1" type="Grade">
        <id property="cid" column="cid"></id>
        <result property="cname" column="cname"></result>
        <collection property="studentList" ofType="Student">
            <id property="sid" column="sid"></id>
            <result property="sname" column="sname"></result>
            <result property="cid" column="cid">
</result>
        </collection>
 </resultMap>
   多对一:
     <resultMap type="" id="">  
          <id property="" column="" />  
          <result property="" column="" />  
          <association property="" javaType="">  
              <id property="" column="" />  
              <result property="" column="" />  
          </association>  
      </resultMap>  
例:
<resultMap id="a2" type="Student">
        <id property="sid" column="sid"></id>
        <result property="sname" column="sname"></result>
        <association property="grade" javaType="Grade">
            <id property="cid" column="cid"></id>
            <result property="cname" column="cname"></result>
        </association>
</resultMap>

对结果进行映射时
     存的是集合的话使用Collection 子标签
     存的是一方的话使用association 子标签
     resultType 和resultMap 属性只能出现一个

JavaType 和 ofType 都是用来指定对象类型的,但是JavaType是用来指定pojo中属性的类型,而ofType指定的是映射到list集合属性中pojo的类型。

相关文章

  • MyBatis多表查询(2.2)

    两表联查(多对一) 注:数据库表以及实体类见上一章节 1、创建StudentAndGradeDao接口中的方法 2...

  • 101、【JavaEE】【Mybatis】复杂查询

    1、概述 复杂查询即多表查询、嵌套查询。 2、多表查询 2.1、一对一 在中使用 2.2、一...

  • 5/10day51_查询&多表

    回顾 优化测试方法 mybatis查询和多表 一 Mybatis单表查询 1.1 resultMap标签 如果数据...

  • Mybatis多表查询

    mybatis的连接池 我们在实际开发中都会用到连接池,因为他可以减少我们获取连接消耗的时间。 mybatis提供...

  • mybatis-plus配置xml进行多表查询

    mybatis-plus多表查询,需自己写xml进行查询。 在mapper中定义,如需分页查询可添加page。 在...

  • mybatis联合多表查询

    数据库表 pms_user_tea表保存教师用户信息 pms_exp表保存实验室信息查询信息:所有教师下的所有实验...

  • mybatis多表联合查询

    开发环境:postgresql数据库、idea工具、easy code插件、springboot+mybatis数...

  • MyBatis多表查询(1)

    两表联查(一对一) 1、创建一个丈夫(husband)表和妻子(wife)表 2、创建Husband和Wife的实...

  • MyBatis多表查询(2.1)

    两表联查(一对多) 1、创建学生(student)表和班级(grade)表 2、创建Student和Grade实体...

  • 06 Mybatis 多表查询

    一、 一对一查询 建立user与account表之间的关联 sql实现查询 定义一个实体类来接受连表查询结果集, ...

网友评论

      本文标题:MyBatis多表查询(2.2)

      本文链接:https://www.haomeiwen.com/subject/ifbsohtx.html