【SSM框架】MyBatis的各种查询功能

简介: 1.查询一个实体类对象2.查询一个list集合3.查询单个数据4.查询一条数据为map集合5.查询多条数据为map集合

1.查询一个实体类对象

/**

* 根据用户id查询用户信息

* @param id

* @return

*/

User getUserById(@Param("id") int id);

  <select id="getUserById" resultType="User">
       select * from t_user where id=#{id};
    </select>
    @Test
    public void test() {
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        User user = mapper.getUserById(2);
        System.out.println(user);
    }

表:

查询结果:

假如,我把后面的条件删除,会发生什么情况呢?


org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3


当查询的数据为多条时,不能使用实体类作为返回值,否则会抛出异常


TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值


2.查询一个list集合

/**


* 查询所有用户信息


* @return


*/


List getUserList();

    <select id="getAllUser" resultType="User">
select * from t_user;
    </select>

测试类:

   @Test
    public void test2(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        List<User> allUser = mapper.getAllUser();
        allUser.forEach(System.out::println);
    }

查询结果:


3.查询单个数据

/**

* 查询用户的总记录数

* @return

* 在 MyBatis 中,对于 Java 中常用的类型都设置了类型别名

* 例如: java.lang.Integer-->int|integer

* 例如: int-->_int|_integer

* 例如: Map-->map,List-->list

*/

int getCount ();

    <select id="getCount" resultType="java.lang.Integer">
        select count(id) from t_user;
    </select>

测试类:

    @Test
    public void test3(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        Integer count = mapper.getCount();
        System.out.println(count);
    }


查询结果:



4.查询一条数据为map集合

/**

* 根据用户 id 查询用户信息为 map 集合

* @param id

* @return

*/

Map < String , Object > getUserToMap ( @Param ( "id" ) int id );

<!--Map<String, Object> getUserToMap(@Param("id") int id);--> 
 <select id="getUserToMap" resultType="map"> 
select * from t_user where id = #{id} 
</select>

测试类:

  @Test
    public  void  test4(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        Map<String, Object> map = mapper.getUserToMap(4);
        System.out.println(map);
    }

5.查询多条数据为map集合


①方式一


/**

* 查询所有用户信息为 map 集合


* @return


* 将表中的数据以 map 集合的方式查询,一条数据对应一个 map ;若有多条数据,就会产生多个 map 集合,此


时可以将这些 map 放在一个 list 集合中获取

*/

List < Map < String , Object >> getAllUserToMap ();

<!--Map<String, Object> getAllUserToMap();-->
 <select id="getAllUserToMap" resultType="map"> 
select * from t_user
 </select>

②方式二

/**

* 查询所有用户信息为 map 集合


* @return


* 将表中的数据以 map 集合的方式查询,一条数据对应一个 map ;若有多条数据,就会产生多个 map 集合,并且最终要以一个 map 的方式返回数据,此时需要通过


@MapKey 注解设置 map 集合的键,值是每条数据所对应的

map 集合

*/

@MapKey ( "id" )

Map < String , Object > getAllUserToMap ();

 <select id="getAllUserToMap" resultType="map"> 
select * from t_user
 </select>

测试类:

    @Test
    public  void  test6(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        Map<String, Object> allUserToMap = mapper.getAllUserToMap();
        System.out.println(allUserToMap);
    }

运行结果:


{1={password=123, sex=男, id=1, age=23, email=11111@qq.com, username=张三},


2={password=root, sex=女, id=2, age=23, email=11111@qq.com, username=root},


3={password=789123, sex=女, id=3, age=28, email=9090889@qq.com, username=小王}, 4={password=1234567, sex=男, id=4, age=34, email=1487418@qq.com, username=小李}}


相关文章
SQL XML Java
67 0
|
2月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
160 12
|
3月前
|
SQL XML Java
MyBatis框架如何处理字符串相等的判断条件。
总的来说,MyBatis框架提供了灵活而强大的机制来处理SQL语句中的字符串相等判断条件。无论是简单的等值判断,还是复杂的条件逻辑,MyBatis都能通过其标签和属性来实现,使得动态SQL的编写既安全又高效。
245 0
|
4月前
|
SQL Java 数据库连接
2-SSM框架篇
Spring框架核心知识点总结,涵盖IOC、DI、Bean作用域、事务管理、AOP、Spring MVC流程及MyBatis相关问题。内容包括控制反转与依赖注入原理、Bean生命周期与线程安全、事务传播机制、JDK与CGLIB代理区别、MyBatis动态SQL与缓存机制等高频面试题。
72 0
|
8月前
|
Java 关系型数据库 MySQL
weixin050高校体育场管理系统+ssm(文档+源码)_kaic
本文针对高校体育场管理系统的开发与实现进行详细介绍。随着经济快速发展,人们对手机软件需求增加,高校体育场管理系统应运而生。系统采用JAVA技术、Mysql数据库和SSM框架等成熟技术,通过分析功能需求、可行性及性能,设计出包含管理员、用户和学生角色的功能模块。系统实现用户注册登录、信息管理等功能,简化传统手工统计模式,提高管理效率,满足用户对信息获取的及时性与准确性需求。
weixin050高校体育场管理系统+ssm(文档+源码)_kaic
|
8月前
|
前端开发 Java 关系型数据库
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
309 17
|
8月前
|
前端开发 Java 关系型数据库
基于ssm的台球厅管理系统,附源码+数据库+论文
本项目为新锐台球厅管理系统,支持管理员和会员两种角色。管理员可进行会员管理、台球桌管理、订单管理等;会员可查看台球桌、预约、购买商品等。技术框架基于Java,采用B/S架构,前端使用Vue+HTML+JavaScript+CSS+LayUI,后端使用SSM框架,数据库为MySQL。运行环境为Windows,JDK8+MySQL5.7+Tomcat8.5。提供演示视频及详细文档截图。
|
8月前
|
前端开发 Java 关系型数据库
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
235 10
|
8月前
|
前端开发 Java 关系型数据库
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
346 19
|
8月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
329 17

热门文章

最新文章