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>

  • 相关阅读:
    基于微软解决方案的负载测试实现知识库1____(转)理解.NET中的数据库连接池
    [转] Performance vs. load vs. stress testing _Grig Gheorghiu (翻译水平有限,如有错误请帮忙刊正)
    Bill Gates Centimillionaire and one poor man.
    VB Comwrapper 的实现
    使用接口作为返回值
    如何排查SQL死锁的错误?
    VC++动态链接库编程之DLL典型实例
    VC++动态链接库编程之DLL木马
    VC中获取窗口句柄的各种方法 .
    VC++动态链接库编程之MFC扩展 DLL
  • 原文地址:https://www.cnblogs.com/aasu/p/11775018.html
Copyright © 2011-2022 走看看