likes
comments
collection
share

MyBatis_MyBatis之查询返回对象集合

作者站长头像
站长
· 阅读数 275

1.引入

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

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

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

public List<Employee> getEmpsByLastNameLike(String lastName);

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

<select id="getEmpsByLastNameLike" resultType="com.atguigu.mybatis.bean.Employee">
        select * from tbl_employee where last_name like #{lastName}
</select>

//resultType:如果返回的是一个集合,要写集合中元素的类型

(3).测试查询

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
List<Employee> like = mapper.getEmpsByLastNameLike("%e%");
for (Employee employee : like) {
    System.out.println(employee);
}

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

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

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

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

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

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

public Map<String, Object> getEmpByIdReturnMap(Integer id);

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

<select id="getEmpByIdReturnMap" resultType="map">
         select * from tbl_employee where id=#{id}
 </select>

//注意这一个时候的resultType

③.测试查询

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Map<String, Object> map = mapper.getEmpByIdReturnMap(1);
System.out.println(map);

总结:

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

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

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

@MapKey("lastName")
public Map<String, Employee> getEmpByLastNameLikeReturnMap(String lastName);

//注意:@MapKey:告诉mybatis封装这个map的时候使用哪个属性作为map的key

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

<select id="getEmpByLastNameLikeReturnMap" resultType="com.atguigu.mybatis.bean.Employee">
         select * from tbl_employee where last_name like #{lastName}
</select>

//注意:这里的resultType是实体对象

③.测试查询

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Map<String, Employee> map = mapper.getEmpByLastNameLikeReturnMap("%r%");
System.out.println(map);

总结:

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

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