【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=小李}}


相关文章
|
4月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
1月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
217 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
1月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
44 1
持久层框架MyBatisPlus
|
2月前
|
Java 数据库连接 容器
Mybatis-Plus核心功能
Mybatis-Plus核心功能
|
2月前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
57 0
|
3月前
|
SQL 存储 Java
原生JDBC简单实现Mybatis核心功能
本文介绍了在Vertx项目中使用Tdengine时,因缺乏异步JDBC驱动而采用同步驱动结合`vertx.executeBlocking`实现异步查询的方法。文中详细描述了自行开发的一个简易JDBC工具,该工具实现了SQL参数绑定与返回值映射至实体类的功能,简化了原生JDBC的繁琐操作。通过具体示例展示了其实现过程及代码细节,并与原生JDBC进行了对比,突显了其便捷性和实用性。
|
3月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
52 0
|
4月前
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
44 0
|
3月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
6月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统