• 多对一处理


    多对一处理

    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中的多对一查询:

    • 子查询

    • 连表查询

  • 相关阅读:
    调用组件的C++代码
    如何用C语言读写文件
    linux 常用命令总结(tsg)
    com.mysql.jdbc.MysqlDataTruncation: Data trunca...
    SpringMVC配置
    中文转换成Unicode编码 和 Unicode编码转换为中文
    在visual studio中运行C++心得
    博客园博客转至个人网站博客声明
    Seafile安装踩坑
    不要因为走得太远,而忘了自己的初心
  • 原文地址:https://www.cnblogs.com/pinked/p/12177712.html
Copyright © 2020-2023  润新知