• 基于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>

  • 相关阅读:
    THINKPAD E40部分问题解疑(抛砖引玉……)
    VS 智能感知失效问题的解决方法
    Distinct()通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。
    dhl:阻止保存要求重新创建表的更改
    linq ef4.0 的联表 Include方法 代替联表操作
    l.cn 代码学习
    CSS解决未知高度垂直居中的问题
    Resharper 下载及使用方法
    网站大并发处理解决方案
    使用的 SQL Server 版本不支持数据类型“datetime2”解决办法
  • 原文地址:https://www.cnblogs.com/aasu/p/11775018.html
Copyright © 2020-2023  润新知