• JavaEE——Mybatis(8)--关联查询以及使用resultMap和association封装规则的定义关联对象


    1.创建一个用来关联的表

    2.创建外键约束

    3.查询

    SELECT s.id id, s.name name, s.sex sex, s.age age, s.grade_id grade_id, g.id gid,
     g.grade_name grade_name FROM student s, grade g WHERE s.grade_id=g.id AND s.name='skye' 
    

      在web中

    StudentMapper.class

    //利用关联查询的方法从数据库获取学生的信息以及班级信息
        public Students getStuAndGrade(Integer id);
    

      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.dao.StudentMapperPlus">
    
        <!--public Students getStuAndGrade(Integer id);-->
        <resultMap type="com.person.Students" id="myStu">
            <id column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="sex" property="sex"/>
            <result column="age" property="age"/>
            <result column="gid" property="grade.id"/>
            <result column="grade_name" property="grade.gradeName"/>
        </resultMap>
        <select id="getStuAndGrade" resultMap="myStu">
            SELECT s.id id, s.name name, s.sex sex, s.age age,
             s.grade_id grade_id, g.id gid, g.grade_name grade_name
             FROM student s, grade g WHERE s.grade_id=g.id AND s.id=#{id}
        </select>
    
    </mapper>
    

      Test

    @Test
        public void test5() throws IOException {
            String resource ="conf/com/mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
    
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession openSession = sqlSessionFactory.openSession();
    
            try{
                StudentMapperPlus mapper = openSession.getMapper( StudentMapperPlus.class );
    
                Students students = mapper.getStuAndGrade(1);
                System.out.println(students);
            }finally{
                openSession.close();
            }
        }
    

       使用association的StudentMapper.xml    其余不变

    <!--
    		使用association定义关联的单个对象的封装规则;
    	 -->
        <resultMap type="com.person.Students" id="myStu1">
            <id column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="sex" property="sex"/>
            <result column="age" property="age"/>
    
            <!--  association可以指定联合的javaBean对象
    		property="grade":指定哪个属性是联合的对象
    		javaType:指定这个属性对象的类型[不能省略]
    		-->
            <association property="grade" javaType="com.person.Grade">
                <id column="gid" property="id"/>
                <result column="grade_name" property="gradeName"/>
            </association>
        </resultMap>
        <select id="getStuAndGrade" resultMap="myStu1">
            SELECT s.id id, s.name name, s.sex sex, s.age age,
             s.grade_id grade_id, g.id gid, g.grade_name grade_name
             FROM student s, grade g WHERE s.grade_id=g.id AND s.id=#{id}
        </select>
    

      

  • 相关阅读:
    币圈寒冬,过去两周内全球约60万矿商关机
    币圈人警惕!5大错误足以摧毁你的一切
    Doctype作用?标准模式与兼容模式各有什么区别?
    递归
    anguments
    fixed 和 absolute 定位的区别
    SublimeText 自带格式化代码功能
    css布局-双飞翼布局
    CSS布局-圣杯布局
    品字布局
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8270353.html
Copyright © 2020-2023  润新知