• MayBatis中的 one to many (多的一方维护关系)


    :首先理解什么叫维护关系: 就是维护关系的一方需要在数据库表中建立外键!

          学生的表(外键sgid)                                                             班级的表

                              

    这里是学生(多的一方) 维护着关系  

        %%%%%%%%%%%%%%%%%%一的一方包含多的一方resultMap——list的写法 %%%%%%%%%%%%%%%%%%%%%%%%%%%%

          <collection property="students"  ofType="com.ipcopyright.domain.Student">

                <id property="id" column="s_id"/>

                <result property="name" column="s_name"/>

          </collection>

        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    班级Bean

    public class Grade {
    
        private Integer gid;
        private String gname;
        private List<Students> studentsList = new ArrayList<Students>();

    班级的映射
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    
    <mapper namespace="com.cn.entity3.Grade" >
        <resultMap id="grad" type="com.cn.entity3.Grade">
            <id property="gid" column="gid"></id>
            <result property="gname" column="gname"></result>
    
            <collection property="studentsList" ofType="com.cn.entity3.Students">
                <id property="sid" column="sid"></id>
                <result property="sname" column="sname"></result>
            </collection>
        </resultMap>
    
       根据学生姓名查询所在班级
        <select id="ggg" resultMap="grad" parameterType="string">
    
            select g.gname,s.sname
            from grades g inner join students s
            on g.gid = s.sgid and s.sname = #{name}
        </select>
    </mapper>

    学生Bean

    public class Students {
        private Integer sid;
        private String sname;
        private Grade grade;

    学生的映射
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    
    <mapper namespace="com.cn.entity3.Students" >
        <resultMap id="students" type="com.cn.entity3.Students">
            <id property="sid" column="sid"></id>
            <result property="sname" column="sname"></result>
            <!---->
            <association property="grade" resultMap="com.cn.entity3.Grade.grad"></association>
        </resultMap>
    
         
    //根据学生的名字查班级 <select id="find" resultMap="students" parameterType="string"> select s.sid,s.sname,g.gname from students s inner join grades g on s.sgid = g.gid where sname = #{sname} </select> </mapper>
    坚持
  • 相关阅读:
    Vue学习(十七)修饰符
    组件学习(一)开发组件前必读
    vue学习(十六)“就地更新”策略
    nrm学习(一)
    帧动画的多种实现方式与性能对比
    JavaScript中的二进制对象
    生成式模型与判别式模型
    堡垒机
    vue生产环境nginx配置代理转发跨域
    Ceph nautilus 集群部署
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/13050012.html
Copyright © 2020-2023  润新知