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

多对多映射就是两个实体之间是多对多的关系,例如老师和学生之间,可能是一个老师对应多个学生,同理一个学生可能对多个老师,那么怎么使用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("****************结束********************");
        }
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值