zoukankan      html  css  js  c++  java
  • mybatis的一对多

    1、配置文件

    db.properties

    db.driver=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8
    db.username=root
    db.password=123456

    SqlMapConfig.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6 
     7     <!-- 加载java的配置文件 -->
     8     <properties resource="config/db.properties"/>
     9     
    10     <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
    11     <environments default="development">
    12         <environment id="development">
    13             <!-- 配置JDBC事务控制,由mybatis进行管理 -->
    14             <transactionManager type="JDBC"></transactionManager>
    15             <!-- 配置数据源,采用mybatis连接池 -->
    16             <dataSource type="POOLED">
    17                 <property name="driver" value="${db.driver}" />
    18                 <property name="url" value="${db.url}" />
    19                 <property name="username" value="${db.username}" />
    20                 <property name="password" value="${db.password}" />
    21             </dataSource>
    22         </environment>
    23     </environments>
    24 
    25     <!-- 加载映射文件 -->
    26     <mappers>
    27         <mapper resource="config/mapper.xml" />
    28     </mappers>
    29     
    30 </configuration>

    mapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <mapper namespace="com.xiaostudy.domain.Mapper">
     6 
     7     <!-- ========================================================================================== -->
     8     <!-- 一对多之resultMap1 -->
     9     <select id="findOfTeacher" resultMap="OfTeacher">
    10         select * from  teacher t, student s where t.tid=s.tid and t.tid=#{id}
    11     </select>
    12     <resultMap type="com.xiaostudy.domain.Teacher" id="OfTeacher">
    13         <id column="tid" property="tid"/>
    14         <result column="tname" property="tname"/>
    15         <collection  property="student" ofType="com.xiaostudy.domain.Student" ><!-- javaType="HashSet" -->
    16             <id column="sid" property="sid"></id>
    17             <result column="tid" property="tid"/>
    18             <result column="sname" property="sname"/>
    19         </collection>
    20     </resultMap>
    21    <!-- ========================================================================================== -->
    22 
    23     <!-- ========================================================================================== -->
    24     <!-- 一对多之resultMap2 -->
    25     <select id="findOfTeachers" resultMap="OfTeachers">
    26         select * from teacher t, student s  where t.tid=s.tid and t.tid=#{id}
    27     </select>
    28     <resultMap type="com.xiaostudy.domain.Teacher" id="OfTeachers">
    29         <id column="tid" property="tid"/>
    30         <result column="tname" property="tname"/>
    31         <collection property="student" ofType="com.xiaostudy.domain.Student" select="getStudent" column="tid"/>
    32     </resultMap>
    33     
    34     <select id="getStudent" parameterType="int" resultType="com.xiaostudy.domain.Student">
    35         select * from student s where s.tid = #{id}
    36     </select>
    37    <!-- ========================================================================================== -->
    38 
    39 </mapper>

    2、domain类

    Student.java

     1 package com.xiaostudy.domain;
     2 
     3 public class Student {
     4     private int sid;
     5     private int tid;
     6     private String sname;
     7     private Teacher teacher;
     8 
     9     public int getSid() {
    10         return sid;
    11     }
    12 
    13     public void setSid(int sid) {
    14         this.sid = sid;
    15     }
    16 
    17     public int getTid() {
    18         return tid;
    19     }
    20 
    21     public void setTid(int tid) {
    22         this.tid = tid;
    23     }
    24 
    25     public String getSname() {
    26         return sname;
    27     }
    28 
    29     public void setSname(String sname) {
    30         this.sname = sname;
    31     }
    32 
    33     public Teacher getTeacher() {
    34         return teacher;
    35     }
    36 
    37     public void setTeacher(Teacher teacher) {
    38         this.teacher = teacher;
    39     }
    40 
    41     @Override
    42     public String toString() {
    43         return "Student [sid=" + sid + ", tid=" + tid + ", sname=" + sname
    44                 + ", teacher=" + teacher + "]";
    45     }
    46 
    47 }

    Teacher.java

     1 package com.xiaostudy.domain;
     2 
     3 import java.util.Set;
     4 
     5 public class Teacher {
     6     private int tid;
     7     private String tname;
     8     private Set<Student> student;
     9 
    10     public Set<Student> getStudent() {
    11         return student;
    12     }
    13 
    14     public void setStudent(Set<Student> student) {
    15         this.student = student;
    16     }
    17 
    18     public int getTid() {
    19         return tid;
    20     }
    21 
    22     public void setTid(int tid) {
    23         this.tid = tid;
    24     }
    25 
    26     public String getTname() {
    27         return tname;
    28     }
    29 
    30     public void setTname(String tname) {
    31         this.tname = tname;
    32     }
    33 
    34     @Override
    35     public String toString() {
    36         return "Teacher [tid=" + tid + ", tname=" + tname + ", student=" + student + "]";
    37     }
    38 
    39 }

    3、代理类Mapper.java

     1 package com.xiaostudy.domain;
     2 
     3 import java.util.List;
     4 
     5 public interface Mapper {
     6 
     7     // 一对多之resultMap1
     8     public List<Teacher> findOfTeacher(int id);
     9     
    10     // 一对多之resultMap2
    11     public List<Teacher> findOfTeachers(int id);
    12 
    13 }

    4、测试类

     1 package com.xiaostudy.test;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.util.List;
     6 
     7 import org.apache.ibatis.io.Resources;
     8 import org.apache.ibatis.session.SqlSession;
     9 import org.apache.ibatis.session.SqlSessionFactory;
    10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    11 
    12 import com.xiaostudy.domain.Mapper;
    13 import com.xiaostudy.domain.Teacher;
    14 
    15 /**
    16  * @desc 测试类
    17  * @author xiaostudy
    18  *
    19  */
    20 public class MybatisTest {
    21 
    22     public static void main(String[] args) throws IOException {
    23         String resource = "config/SqlMapConfig.xml";
    24         InputStream inputStream = Resources.getResourceAsStream(resource);
    25 
    26         // 创建SqlSessionFactory
    27         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    28 
    29         // 创建SqlSession
    30         SqlSession sqlSession = sqlSessionFactory.openSession();
    31 
    32         // 获取一个代理dao实现
    33         Mapper mapper = sqlSession.getMapper(Mapper.class);
    34         
    35         //一对多之resultMap1
    36         /*List<Teacher> list = mapper.findOfTeacher(1);
    37         for(Teacher t : list) {
    38             System.out.println(t);
    39         }*/
    40         
    41         //一对多之resultMap2
    42         List<Teacher> list = mapper.findOfTeachers(1);
    43         for(Teacher t : list) {
    44             System.out.println(t);
    45         }
    46         
    47         sqlSession.close();
    48 
    49     }
    50     
    51 }

    5、数据库

    teacher表

    student表

     


  • 相关阅读:
    [HNOI2002]营业额统计
    HDU 1374
    HDU 3345
    HDU 2089
    Graham扫描法
    Codeforces 1144D Deduction Queries 并查集
    Codeforces 916E Jamie and Tree 线段树
    Codeforces 1167F Scalar Queries 树状数组
    Codeforces 1167E Range Deleting
    Codeforces 749E Inversions After Shuffle 树状数组 + 数学期望
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/9588985.html
Copyright © 2011-2022 走看看