zoukankan      html  css  js  c++  java
  • 多对一处理

    多对一处理

    SQL:

    CREATE TABLE `teacher`(
    `id` INT(10) NOT NULL,
    `name` VARCHAR(30) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8
    
    INSERT INTO teacher(`id`,`name`) VALUES(1,'大老师');
    
    CREATE TABLE `student`(
    `id` INT(10) NOT NULL,
    `name` VARCHAR(30) DEFAULT NULL,
    `tid` INT(10) DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY `fktif`(`tid`),
    CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    
    INSERT INTO `student`(`id`,`name`,`tid`)VALUES('1','小明','1');
    INSERT INTO `student`(`id`,`name`,`tid`)VALUES('2','小红','1');
    INSERT INTO `student`(`id`,`name`,`tid`)VALUES('3','小张','1');
    INSERT INTO `student`(`id`,`name`,`tid`)VALUES('4','小李','1');
    INSERT INTO `student`(`id`,`name`,`tid`)VALUES('5','小王','1');
    

    测试环境搭建

    1. 导入Lombok

    2. 新建实体类Teacher和Student

    3. 建立Mapper接口

    4. 建立Mapper.xml文件

    5. 在核心配置文件中绑定注册Mapper接口或文件

    6. 测试

    按照查询嵌套处理

    <resultMap id="StudentTeacher" type="Student">
            <result property="id" column="id"/>
            <result property="name" column="name"/>
            <!--复杂的属性需要单独处理   对象:association   集合:collection-->
            <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
        </resultMap>
    
        <select id="getStudent" resultMap="StudentTeacher">
            select * from student
        </select>
        <select id="getTeacher" resultType="Teacher">
            select * from teacher where id = #{id}
        </select>
    

    按照结果嵌套处理

    <resultMap id="StudentTeacher2" type="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <!--复杂的属性需要单独处理   对象:association   集合:collection-->
        <association property="teacher" javaType="Teacher">
            <result property="name" column="tname"/>
        </association>
    </resultMap>
    
    <select id="getStudent2" resultMap="StudentTeacher2">
        select s.id sid, s.name sname, t.name tname
        from student s, teacher t
        where s.tid = t.id;
    </select>
    

    类似于Mysql中的多对一查询:

    • 子查询

    • 连表查询

  • 相关阅读:
    ElasticSearch安装中遇到的一些问题
    微信扫描二维码下载问题
    nginx截获客户端请求
    Nginx中的一些匹配顺序
    Redis-cli命令最新总结
    RabbitMQ服务安装配置
    Nginx服务状态监控
    使用Sqlserver更新锁防止数据脏读
    PHPStorm IDE 快捷键(MAC)
    MongoDB 安装
  • 原文地址:https://www.cnblogs.com/pinked/p/12177712.html
Copyright © 2011-2022 走看看