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表

     


  • 相关阅读:
    EntityFramework之领域驱动设计实践
    Entity Framework 学习初级篇1EF基本概况(入门)
    整理一下Entity Framework的查询
    Unity(六):使用场景Ⅲ:用于依赖注入(上)
    比较NHibernate和Entity Framework
    contentclass对应的一些值
    IE8访问架设在Windows Server 2008(R2)的SharePoint Server 2007是验证框问题
    创建一个图文并茂的调查
    SharePoint回环检查(Loopback Check)相关问题
    Something you need to know about Content Deployment in SharePoint
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/9588985.html
Copyright © 2011-2022 走看看