MyBatis中多表查询(业务代码方式)

业务代码的方式 (实现的方式,书写业务逻辑的java代码实现)
------查询学生所在班级的信息 (一对一查询)
1、先把所有学生查询出来(clazzno)
select* from student
2、拿着clazzno去clazz表中查询班级的信息
select * from clazz where cno=?
------查询班级中所有学生的信息(一对多查询)
1、查询所有班级的信息(clazzno)
Select * from clazz
2、查询指定班级中的所有学生—List
Select * from student where clazzno=?
特点:
班级和学生之间的关系全部是靠我们书写java业务逻辑代码的方式实现的
最后执行完成SQL语句都执行了N+1次数据的查询

接口
ClazzMapper.java

public interface ClazzMapper {

    //查询指定学生所在班级的信息
    Clazz  selectOne(int clazzno);

    //查询所有班级信息
    List<Clazz>  selectAll();
}

StudentMapper.java

public interface StudentMapper {

    //查询所有学生的操作
    List<Student>  selectAll();

    List<Student>  selectMore(int clazzno);
}

XML
ClazzMapper.xml

    <select id="selectOne" resultType="clazz">

        SELECT  *  from  clazz  where  clazzno=#{param1}

    </select>
    
    <select id="selectAll" resultType="clazz">

        SELECT  *  from  clazz

    </select>

StudentMappe.xml

<select id="selectAll"  resultType="student">

         SELECT  * from   student
         
</select>

<select id="selectMore" resultType="student">

        SELECT  *  from  student  where  clazzno=#{param1}

</select>

测试

//查询所有学生所在的班级的信息

            /* //[A]查询所有学生-->clazzno
            List<Student> list = stuMapper.selectAll();

           //[B]拿着clazzno去班级表中查询班级的信息

           for(Student  stu:list){
                //每一个学生所在班级的编号
               Integer clazzno = stu.getClazzno();

               Clazz clazz = claMapper.selectOne(clazzno);

               stu.setCla(clazz);

               System.out.println(stu);

           }*/

          //查询所有班级中学生的信息

        //[A]查询所有班级的信息

        List<Clazz> claList = claMapper.selectAll();

        //[B]查询班级中对应的学生的信息

        for(Clazz  cla:claList){

            //班级编号
            Integer clazzno = cla.getClazzno();

            //指定班级中所有学生的集合
            List<Student> list = stuMapper.selectMore(clazzno);

            cla.setLi(list);

            System.out.println(cla);

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AloneDrifters

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值