• MyBatis_MyBatis之查询返回对象集合


    1.引入

    通过前面几节课程,我们了解了使用MyBatis实现基本的增删查改的操作,然后我们又说了一下载增删查改中的参数传递问题。我们之前的操作主要是针对一个对象进行的操作。那么当我们的返回值是一个集合的时候该如何进行处理呢?那么现在我们较为详细的了解一下查询操作。

    2.实现返回值是一个对象集合(List)的操作

    (1).在接口中定义编写查询的方法

    public List getEmpsByLastNameLike(String lastName);
    
    • 1

    (2).在该实体对象的对应的映射文件中进行查询的配置

    
    
    //resultType:如果返回的是一个集合,要写集合中元素的类型
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3).测试查询

    EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    List like = mapper.getEmpsByLastNameLike("%e%");
    for (Employee employee : like) {
    	System.out.println(employee);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    总结:使用select查询出一个对象集合然后返回需要注意:

    1.我们在实体对象的映射文件中设置配置的时候,如果返回的是一个集合,要写集合中元素的类型。

    2.在查询的时候,我们直接使用一个集合对象List来接收查询的结果即可,MyBatis会帮助我们加载到集合中。

    3.实现返回值是一个对象集合(Map)的操作

    (1).单条记录封装成为一个Map对象

    ①.在接口中定义编写查询的方法

    public Map getEmpByIdReturnMap(Integer id);
    
    • 1

    ②.在该实体对象的对应的映射文件中进行查询的配置

    
    
    //注意这一个时候的resultType
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ③.测试查询

    EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    Map map = mapper.getEmpByIdReturnMap(1);
    System.out.println(map);
    
    • 1
    • 2
    • 3

    总结:

    1.注意在实体对象的对应的映射文件中进行查询的配置的时候resultType的类型。

    (2).单条记录封装成为一个Map对象

    ①.在接口中定义编写查询的方法

    @MapKey("lastName")
    public Map getEmpByLastNameLikeReturnMap(String lastName);
    
    //注意:@MapKey:告诉mybatis封装这个map的时候使用哪个属性作为map的key
    
    • 1
    • 2
    • 3
    • 4

    ②.在该实体对象的对应的映射文件中进行查询的配置

    
    
    //注意:这里的resultType是实体对象
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ③.测试查询

    EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    Map map = mapper.getEmpByLastNameLikeReturnMap("%r%");
    System.out.println(map);
    
    • 1
    • 2
    • 3

    总结:

    1.我们在实体对象的映射文件中设置配置的时候,如果返回的是一个集合,要写集合中元素的类型。

    2.我们在接收的时候需要在方法上面声明Map的key类型,使用的是@MapKey(" + key的名称+ ")。

  • 相关阅读:
    神经网络 深度神经网络,脉冲神经网络原理
    Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能
    1. pip和conda的区别
    Linux------权限篇1)
    RabbitMQ高级特性
    PLC和SCADA有什么区别?
    BootLoader-UDS刷写流程
    【SpringBoot整合NoSql】-----ElasticSearch的安装与操作篇
    [附源码]计算机毕业设计springboot天狗电子商城系统
    动手学习深度学习08----线性模型+基础优化算法
  • 原文地址:https://blog.csdn.net/m0_67401499/article/details/126463618