MyBatis学习笔记

您所在的位置:网站首页 mybatis查询多个字段 MyBatis学习笔记

MyBatis学习笔记

#MyBatis学习笔记| 来源: 网络整理| 查看: 265

查询返回HashMap介绍查询一条数据1.sql语句编写样式2.接口编写格式 查询多条数据1.sql语句编写样式2.接口编写格式 鉴别器的运用介绍

查询返回HashMap介绍 介绍:有时候就想通过HashMap返回sql查询的值,然后最近也终于学到了设置返回类型为HashMap类型,如何建立sql语句以及接口方法的书写问题;不过目前觉得一般吧; 查询一条数据 1.sql语句编写样式 select stuNo ,stuName ,stuAge from student where stuNo = #{stuNo} 2.接口编写格式 HashMap queryStudentByHashMap(int stuNo);

然后就可以通过调用方法接口获得相应的信息了;

但是,有时候想查询多条数据,使用该方法就不行了,为啥?

一个很明显的逻辑原因就是HashMap中的K是唯一的,以上方式是将 stuNo ,stuName ,stuAge 作为KEY,而相应的值作为value;

而MyBatis也考虑到了返回值是HashMap,而需要返回接收多个数据的问题,主要是通过pojo类以及@MapKey("")指定,以下是HashMap多值接收:

查询多条数据 1.sql语句编写样式 select stuNo ,stuName ,stuAge from student 2.接口编写格式 //获取多值 @MapKey("stuNo") HashMap queryStudentsByHashMap();

这样就行了,不过注意的是,调用接口该方法的时候,要注意接收的一方也要是 ,如果是的话接收不了;如果stuNo是字符串,则是; 建议就是stuNo是主键或则唯一约束,不然会出现覆盖掉的情况;

嗯~,这样其实用类包装更好了,然后用List进行接收多个;

鉴别器的运用介绍

鉴别器discriminator的设置是在resultMap里面的,主要是根据查询的结果进行分支处理和if分支语句有点类似;

例如Student中的变量有:stuNo,stuName,stuAge,graName四个;而student表中有sno,sname,sage,gname,nickname;然后设定以gname为判断标准,如果是班级是“a”,则stuName对应真名,如果是“b”,stuName对应昵称;

select sno, sname,nickname, sage, gname from student

然后就根据班级来区分使用真名和昵称了;

最后附上: ResultMap的所有属性以及含义 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3