zoukankan      html  css  js  c++  java
  • 基于mybatis的的单表多表查询resultMap用法

    对应的老师实体类:

    class Teacher{

    public class Teacher {
        private int id1;
        private String name1;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    }

    学生实体类:

    public class Student {
        private int id;
        private String name;
        private int age;
        private Teacher teacher;

        private int tid;

        public Teacher getTeacher() {
            return teacher;
        }

        public void setTeacher(Teacher teacher) {
            this.teacher = teacher;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public int getTid() {
            return tid;
        }

        public void setTid(int tid) {
            this.tid = tid;
        }
    }

    对应的mybatis中teacherMapper.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="a.b">

    <resultMap type="teacher" id="mymap">

    <!--主键使用id配置映射关系-->

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

    <!--其他列使用result标签配置映射关系,多个列就是用多个result标签-->

    <result column="name1" property="name1"/>

    </resultMap>
        <select id="selAll" resultMap="mymap">
        select * from teacher   
        </select>

    <select id="selById" resultType="teacher" parameterType="int">

    select * from  teacher where  id=#{0}

    </select>

    </mapper>

    测试时,与使用autoMappering一样。

    测试:

    public class Test {
        public static void main(String[] args) throws IOException {
            InputStream is = (InputStream) Resources.getResourceAsStream("mybatis.xml");
            SqlSessionFactory factory = (SqlSessionFactory) new SqlSessionFactoryBuilder().build(is);
            SqlSession session=factory.openSession();
            session.selectList("a.b.selAll");
            session.close();

    使用resultMap实现关联单个对象(N+1方式查询)

    n+1方式查询:先查出某个表的全部信息,根据这个表的信息查询另一个表的信息。
     

    对应的mybatis中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="c.d">

    <resultMap type="student" id="stumap">

    <!--主键使用id配置映射关系-->

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

    <!--其他列使用result标签配置映射关系,多个列就是用多个result标签-->

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

    <result column="age" property="age"/>

    <result column="tid" property="tid"/>

    <!--如果关联一个对象用此标签-->

    <association property="teacher" select="a.b.selById"  column="tid"></association>

    <!--如果关联集合对象-->

    <collection property=""></collection>

    </resultMap>
        <select id="selAll" resultMap="stumap">
        select * from student 
        </select>
    </mapper>

  • 相关阅读:
    Mysql 使用触发器,把插入的数据在插入到宁一张表里
    Mysql 查询今天的某些时间之外的数据
    PHPStorm+XDEBUG 调试Laravel
    Python 2.7 爬取51job 全国java岗位
    Tp3.1 文件上传到七牛云
    TP3.1 一对多模型关联
    Mysql 主从配置
    自动化测试Java一:Selenium入门
    Selenium基于Python 进行 web 自动化测试
    Python 创建XML
  • 原文地址:https://www.cnblogs.com/aasu/p/11775018.html
Copyright © 2011-2022 走看看