Mybatis---配置文件完成增删改查(查询所有)
查询-----查询所有数据
-
编写接口方法:Mapper接口
- 参数:无
查询所有数据功能是不需要根据任何条件进行查询的,所以此方法不需要参数
- 结果:List
我们会将查询出来的每一条数据封装成一个 Brand 对象,而多条数据封装多个 Brand 对象,需要将这些对象封装到List集合中返回。
- 执行方法、测试
2 编写SQL语句
3 编写测试方法
//2. 获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3. 获取Mapper接口的代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//4. 执行方法
List brands = brandMapper.selectAll();
System.out.println(brands);
//5. 释放资源
sqlSession.close();
有些数据封装成功了,而有些数据并没有封装成功。为什么这样呢?
这个问题可以通过两种方式进行解决:
- 给字段起别名
- 使用resultMap定义字段和属性的映射关系
数据库表的字段名称和实体类的属性名称不一样,则不能自动封装数据
- 给字段起别名
也可用SQL片段
将需要复用的SQL片段抽取到 sql 标签中
xml id, brand_name as brandName, company_name as companyName, ordered, description, status
id属性值是唯一标识,引用时也是通过该值进行引用。
在原sql语句中进行引用
使用 include 标签引用上述的 SQL 片段,而 refid 指定上述 SQL 片段的id值。
xml
使用resultMap解决上述问题
起别名 + sql片段的方式可以解决上述问题,但是它也存在问题。如果还有功能只需要查询部分字段,而不是查询所有字段,那么我们就需要再定义一个 SQL 片段,这就显得不是那么灵活。
那么我们也可以使用resultMap来定义字段和属性的映射关系的方式解决上述问题。
在映射配置文件中使用resultMap定义 字段 和 属性 的映射关系
xml
注意:在上面只需要定义 字段名 和 属性名 不一样的映射,而一样的则不需要专门定义出来。
SQL语句正常编写
xml
resultMap:
1、定义
2、在
小结
实体类属性名 和 数据库表列名 不一致,不能自动封装数据
* ==起别名:==在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样
* 可以定义 片段,提升复用性
* ==resultMap:==定义 完成不一致的属性名和列名的映射
而我们最终选择使用 resultMap的方式。查询映射配置文件中查询所有的 statement 书写如下:
```xml
5/2/2022 1