mybatis学习 十四 resultMap标签 一对一(联合查询)

1.使用 resultMap 实现关联单个对象(联合查询方式)

<resultMap type="Student" id="stuMap1">
    <id column="sid" property="id"/>
    <result column="sname" property="name"/>
    <result column="age" property="age"/>
    <result column="tid" property="tid"/>
    <association property="teacher" javaType="Teacher" >

        <id column="tid" property="id"/>
        <result column="tname" property="name"/>
    </association>
</resultMap>

<select id="selAll1" resultMap="stuMap1">
    select s.id sid,s.name sname,age age,t.id tid,t.name tname

    FROM student s left outer join teacher t on s.tid=t.id
</select>    

注意id为selAll1的select标签与下面id为selAll的select标签的区别

      <resultMap type="student" id="stuMap">
              <id column="id" property="id"/>
              <result column="name" property="name"/>
              <result column="age" property="age"/>
              <result column="tid" property="tid"/>
              <association property="teacher" javaType="Teacher" column="tid" select="com.xxx.mapper.TeacherMapper.selById" >
              </association>
          </resultMap>
          <select id="selAll" resultMap="stuMap">
              select * from student
          </select>

第一中是联合查询,第二中不是,是先查询每一个学生,然后再根据学生的tid去查询老师,第二种实现效率低

原文地址:https://www.cnblogs.com/cplinux/p/9657025.html

时间: 2024-10-12 21:28:42

mybatis学习 十四 resultMap标签 一对一(联合查询)的相关文章

mybatis学习 十六 auto_mapping实现连表查询

只能使用多表联合查询方式. 要求:查询出的列别和属性名相同. 点字符  "."  在 SQL 是关键字符,两侧添加反单引号(Tab键上的一个字符) <select id="selAll" resultType="student"> select t.id `teacher.id`, t.name `teacher.name`, s.id id, s.name name,age,tid from student s LEFT JOIN

MyBatis学习笔记之resultMap

使用mybatis不能不说的是resultMap 相比resultClass来说resultMap可以适应更复杂的关系映射,允许指定字段的数据类型,支持“select *” ,并不要求定义 ResultSet所有返回字段的映射 在resultMap中配置如下, 主要是搞懂关联关系怎么配置就可以了,无非就是一对一,一对多, 多对多: <resultMap id="BaseResultMap" type="类的全路径" > <id column=&qu

Oracle学习(十四):管理用户安全

--用户(user) SQL> --创建名叫 grace 密码是password 的用户,新用户没有任何权限 SQL> create user grace identified by password; 验证用户: 密码验证方式(用户名/密码) 外部验证方式(主机认证,即通过登陆的用户名) 全局验证方式(其他方式:生物认证方式.token方式) 优先级顺序:外部验证>密码验证 --权限(privilege) 用户权限有两种: System:允许用户执行对于数据库的特定行为,例如:创建表.

mybatis学习 十三 resultMap标签 一对一

1 .<resultMap>标签 写在mapper.xml中,由程序员控制SQL查询结果与实体类的映射关系. 在写<select>标签中,有一个resultType属性,此时select标签中,select语句的返回字段要与resultType属性指定的类的属性名称一致,此时成为自动映射,但是当要接收查询接口的类的属性名称,与select语句的返回字段不一致时,mybatis时无法自动进行映射的,此时需要程序员手动指定映射,此时就用到resultMap标签. 2. <resu

Mybatis的一对多(collection)和一对一(association)查询

1.mybatis支持映射复杂的查询结果集 2.表之间的关系 3.实体及其对应关系: @Data @EqualsAndHashCode(callSuper = false) public class TestOne implements Serializable { private static final long serialVersionUID = 1L; private Integer id; // private String nickname; // private List<Tes

MyBatis学习(4)------------实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN

mybatis的动态sql编写以及一对一关系查询和一对多的查询

创建mybatis数据库,运行以下sql语句 /* SQLyog Ultimate v8.32 MySQL - 5.5.27 : Database - mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @[email protected]@UNIQU

测开之路一百四十四:ORM之SQLAlchemy查询

在上一篇的基础上,插入数据 查询 Department.query.all() # 用表对象查db.session.query(Department).all() # 用db对象查 查询前两条,直接python截取前两条数据 排序 默认升序:order_by(排序的字段名) 倒序:从sqlalchemy导入desc 查询单个指定字段 查询多个指定字段 只用一个变量接收多个查询结果的时候,SQLAlchemy默认用namedtuple进行命名处理 namedtuple结构: 别名:label(别名

Mybatis学习记录(四)--高级查询和缓存

这些都是连贯的学习笔记,所以有的地方因为之前都说过,所以也就没怎么写详细了,看不太明白的可以看看之前的笔记. 一.高级查询 高级查询主要是一对一查询,一对多查询,多对多查询 1.一对一查询 有用户和订单两个表,用户对订单是1对1查询.也就是订单中有一个外键是指向用户的. 先创建实体类: User.java public class User { private int id; private String username; private String password; private St