mybatis映射关系——多对多映射

来源:互联网 发布:淘宝店经营类目怎么改 编辑:程序博客网 时间:2024/06/05 22:33

多对多映射就是两个实体之间是多对多的关系,例如老师和学生之间,可能是一个老师对应多个学生,同理一个学生可能对多个老师,那么怎么使用Mybatis程序怎么写出多对多关系???
1.先在entity包中新建两个实体类,一个是学生类,另一个就是教师类,以学生类为主体,完成多表查询操作:

student类

package com.baidu.lmj.entity;public class TStudent {    private int id;    private String username;    private int cid;    private TTeachter tea;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public int getCid() {        return cid;    }    public void setCid(int cid) {        this.cid = cid;    }    public TTeachter getTea() {        return tea;    }    public void setTea(TTeachter tea) {        this.tea = tea;    }}

teachter类

package com.baidu.lmj.entity;import java.util.List;public class TTeachter {    private int id;    private String tname;    private List<TStudent> list;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getTname() {        return tname;    }    public void setTname(String tname) {        this.tname = tname;    }    public List<TStudent> getList() {        return list;    }    public void setList(List<TStudent> list) {        this.list = list;    }}

2.在dao包中分别建一个TTeachter.java和TStudent.java,并且定义一些常用的方法,方法如下所示:
TTeachter.java

package com.baidu.lmj.dao;import java.util.List;import com.baidu.lmj.entity.TTeachter;public interface TTeachterdao {    public List<TTeachter> SelectAllTTeachter();    public List<TTeachter> SelectAllTTeachter1();}

TStudent.java

package com.baidu.lmj.dao;import java.util.List;public interface TStudent {    public List<TStudent> SelectAllStudent();    public List<TStudent> SelectAllStudent1();}

3.在entity包中建立TStudent.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="com.baidu.lmj.dao.TStudentDao">    <resultMap type="com.baidu.lmj.entity.TStudent" id="map01">        <id column="sid" property="id"/>        <result column="username" property="username"/>        <collection property="tea" ofType="com.baidu.lmj.entity.TTeachter">            <id column="tid" property="id"/>            <result column="tname" property="tname"/>        </collection>    </resultMap>    <select id="SelectAllStudent" resultMap="map01">        select a.id AS sid,username,c.id AS tid,c.tname from t_student a INNER JOIN t_s_t b ON a.id=b.sid INNER JOIN t_teacher c ON b.tid=c.id    </select>    <resultMap type="com.baidu.lmj.entity.TStudent" id="map02">            <id column="id" property="id"/>            <result column="username" property="username"/>            <collection property="tea" column="id" ofType="com.baidu.lmj.entity.TTeachter" select="id001">                <id column="id" property="id"/>                <result column="tname" property="tname"/>            </collection>    </resultMap>    <select id="SelectAllStudent1" resultMap="map02">        select * FROM t_student    </select>    <select id="id001" parameterType="int" resultType="com.baidu.lmj.entity.TTeachter">            select * FROM t_s_t a INNER JOIN t_teacher b ON a.tid=b.id WHERE a.sid=1    </select></mapper>

4.在biz包中新建TStudentBiz.java类,进行业务层构建

package com.baidu.lmj.biz;import java.io.IOException;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.baidu.lmj.dao.TStudentDao;import com.baidu.lmj.entity.TStudent;import com.baidu.lmj.util.SessionFactory;public class TStudentBiz {    TStudentDao dao;    public List<TStudent> getAllTStudent(){        List<TStudent> list=null;        try {            SqlSession session=SessionFactory.getSession();            dao=session.getMapper(TStudentDao.class);            list=dao.SelectAllStudent();            SessionFactory.ClosedSession(session);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return list;    }public List<TStudent> getAllTStudent1(){        List<TStudent> list=null;        try {            SqlSession session=SessionFactory.getSession();            dao=session.getMapper(TStudentDao.class);            list=dao.SelectAllStudent1();            SessionFactory.ClosedSession(session);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return list;    }}

5.在Main.java类里面进行测试并运行,测试代码如下所示:

package com.baidu.lmj.Main;import java.util.List;import com.baidu.lmj.biz.TStudentBiz;import com.baidu.lmj.entity.TStudent;import com.baidu.lmj.entity.TTeachter;public class Main1 {    public static void main(String[] args) {        // TODO Auto-generated method stub//      TStudentBiz biz=new TStudentBiz();//      //      List<TStudent> list=biz.getAllTStudent();//      //      for(TStudent stu:list)//      {//          System.out.println("查询的学生是"+stu.getUsername());//          System.out.println("他的教师是************************");//          //          for(TTeachter te:stu.getTea())//          {//              System.out.println(te.getTname());//          }//          System.out.println("****************结束********************");//      }        TStudentBiz biz=new TStudentBiz();        List<TStudent> list=biz.getAllTStudent1();        for(TStudent stu:list)        {            System.out.println("查询的学生是"+stu.getUsername());            System.out.println("他的教师是************************");            for(TTeachter te:stu.getTea())            {                System.out.println(te.getTname());            }            System.out.println("****************结束********************");        }    }}
原创粉丝点击