文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mybatis处理返回结果集

2023-09-03 11:06

关注

结果处理

1 简单类型输出映射

返回简单基本类型

//查询管理员总数int adminCount();
        select count(*) from admin

794769acd7964b44bb646cee0d315342.png

dc81f836aa394b8faec49d21ea023cca.png

dc987f4058494cfc935327cdc9978b91.png

2 对象映射

例如: 

定义的类中的属性名:

a79aa7fbe9c545aeb913a61e3ec3cfef.png

     select id,account,password,admin_gender from admin

420e8f96e86c48f294092cc8121f0023.png

3 特殊处理定义 resultMap

定义 resutlMap

                      

  (1) resutlMap 的 id 属性是 resutlMap 的唯一标识,本例中定义为“adminMap”

  (2) resutlMap 的 id 属性是映射的 POJO 类

  (3) id 标签映射主键,result 标签映射非主键

  (4) property 设置 POJO 的属性名,column 数据库中列名

使用 resutlMap

    SELECT         s.id,        s.num,        s.name,        s.gender,        s.birthday,        d.num dormNum,        a.account,        s.oper_time    FROM student s              LEFT JOIN dorm d ON s.dormid = d.id              LEFT JOIN admin a ON s.adminid = a.id              WHERE s.id = #{id}

测试:

@Testpublic void find() {    SqlSession sqlSession = MybatisUtil.getSqlSession();    StudentDao studentDao = sqlSession.getMapper(StudentDao.class);        Student student = studentDao.findStudentById(1);        sqlSession.commit();    sqlSession.close();}

c98d4c824a6b4410869d4076354dd5cf.png

方法二:嵌套查询(把sql分成多次查询,先查询学生信息,再通过外键查询宿舍和操作人信息)

                                    
     select num from dorm where id = #{dormid}
        SELECT            d.id,            d.num,            s.num,            s.name,            a.account       FROM dorm d       LEFT JOIN admin a ON d.adminid = a.id       LEFT JOIN student s ON d.id = s.dormid                  WHERE d.id = 1

测试:

@Testpublic void find(){    SqlSession sqlSession = MybatisUtil.getSqlSession();    DormDao dormDao = sqlSession.getMapper(DormDao.class);    //通过id查询宿舍和这个宿舍中所住学生的信息    Dorm dorm = dormDao.findDormById(1);    sqlSession.close();}

3fe786f7017d4affad6e0cebc3f3b0fd.png

方法2:嵌套查询

                
    SELECT account FROM admin WHERE id = #{adminid}     SELECT            d.id,            d.num,            s.num,            s.name,            a.account       FROM dorm d       LEFT JOIN admin a ON d.adminid = a.id       LEFT JOIN student s ON d.id = s.dormid

测试:

@Testpublic void find(){    SqlSession sqlSession = MybatisUtil.getSqlSession();    DormDao dormDao = sqlSession.getMapper(DormDao.class);    //查询每个宿舍,并关联每个宿舍中有多少个学生    List dorms = dormDao.findDorms();        // 遍历所有宿舍    for (Dorm dorm:dorms){        System.out.println(dorm);        // 获取到宿舍中所有学生信息        for (Student student:dorm.getStudents()){            System.out.println(student.getNum()+":"+student.getName());        }    }    sqlSession.close();}

可以看到查询出了所有的宿舍以及宿舍所住学生的信息:

2c07788c7ef44cceb651d6a8efafeb47.png

方法2:嵌套查询

                
    SELECT account FROM admin WHERE id = #{adminid}

测试:806ac0c3e5de483b845b73056249e1fb.png

 

来源地址:https://blog.csdn.net/m0_58450531/article/details/128510519

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯