Mybatis---配置文件完成增删改查(查询所有)


查询-----查询所有数据

  1. 编写接口方法: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、在 select * from tb_brand;