zoukankan      html  css  js  c++  java
  • Mybatis关联映射(一对一)

    数据库中表与表之间的关系或者说是实体与实体之间的关系,例如学生与班级,从学生的角度看。

    数据表二张:

    班级

    tb_clazz(
        id,        // 班级号
        cname) // 班级名称
    

      学生

    tb_student(
        id,
        loginname,
        password,
        username,
        clazz_id)    // clazz_id 引用班级表中的id,是一个外键
    

      实体类二个:

      班级

    Clazz{
        id,
        cname;
    }
    

      学生

    student{
        id;
        loginname;
        password;
        username;
        Clazz clazz;  //班级类作为成员变量
    }
    

      ClazzMapper.xml

    ?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.mapper.ClazzMapper">
        <select id = "selectClazzById" parameterType="int" resultType="clazz">
                select * from tb_clazz where id=#{id}
        </select>
    </mapper>
    
    <select>元素实现了根据id对tb_clazz表的查询,返回的是clazz对象,即为一条记录。
    这一段代码实现了tb_class与Clazz类之间的映射。
    

      StudentMapper.xml

    ?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.mapper.StudentMapper">
    <select id="selectStudentById" resultMap="studentMap">
            select * from tb_student where id = #{id}
    </select>
    <resultMap type="student" id="studentMap">
        <id property = "id" column="id"/>
        <result property = "loginname" column="loginname"/>
        <result property = "password" column="password"/>
        <result property = "username" column="username"/>
        <association property="clazz" column="clazz_id"
            select="com.mapper.Clazzmapper.seleceClazzById"
            javaType="clazz"/>
    </resultmap>
    </mapper>
    

     <select>实现了id对学生表的查询,返回值为resultMap,下面是定义,其类型又为一个student,实现了student类与tb_student的映射(因为类中的clazz是个类,而表中的clazz_id为intger,所以用resultMap表达复杂的查询结果)

    是这样实现的:

    当查询学生id时,会查询所有的信息,loginname三个简单的数据能直接得到,后面的clazz类是这样得到的:把clazz_id传给了clazzy映射文件的查询语句。

    总之:

    要用mybatis操作一对一关联的表,需要数据库二个表通过外键关联。二,有外键的表对应的类中要有宁外一个类的实体类作为成员变量(属性)。分别为2个表创建映射文件,在有外键的表对应的映射文件,将<resultmap>元素中的<association>与宁外一个表的映射文件中有关的<select>元素关联起来。

  • 相关阅读:
    web.xml文件中元素的作用
    spring获取webapplicationcontext,applicationcontext几种方法详解
    web.xml文件中的Listener元素的作用
    IT旅途——程序员面试经验分享
    软件工程师的十个“不职业”行为
    雷军系好生意:小米,不是一家公司在战斗!
    tomcat 5.0 linux 配置
    ubuntu tomcat6.0 JAVA 变量
    初创企业的初创之路
    架构设计和包图
  • 原文地址:https://www.cnblogs.com/hujesse4/p/13965410.html
Copyright © 2011-2022 走看看