Mybatis的查询功能(必定有返回值)
注意:
- 查询功能与前面的增删改不同,增删改的返回值是固定的(所以增删改我们就有两种返回值要么设置为int获取受影响的行数,要么设置为void我们不获取返回值)
- 而我们的查询功能必须有返回值(所以我们要想好我们查询的结果是什么(比如我们可以查询出一条数据作为实体类对象,我们也可以查询出所有数据来获取一个实体类的集合,也就情况查询出来是单行单列的。))
- !!!!!因为查询必须要有返回值所以接口方法就不能用void
- 查找sql流程:
就是根据全类名找到映射文件再通过方法名找到sql语句。
思考:
关于结果集的思考(百度百科):结果集是对象包含符合SQL 语句中条件的所有行集合。它通过一套get 方法,这些get 方法可以访问当前行中的不同列,提供了对这些行中数据的访问。结果集一般是一个表
- 为什么只有查询需要设置返回结果集类型(也看到了结果集一般是个表而查询出来的要么就是个一行数据,要么就是一个表。所以这里就必须需要了)
- Mybatis ORM半自动映射框架在执行完sql语句后并不知道要将其转化为什么样的实体类对象。我们就设置个数据集类型(把我们查询出来的结果转化为设置的结果类型作为返回值返回给我们的方法)
- 简单来讲就是 接口方法的返回值类型restype对应的返回值的实体类
- 蠢货为什么要设置resType可能就是因为我们可能会有多个实体类对象,服务器无法区分所以我们需要设置一个对应的结果集
实践1(查询实体类对象(也就是我们根据一个条件查询出一条数据))
第一步:创建接口方法
第二步:创建映射文件sql语句
1、resultType或resultMap从select语句中返回的期望类型的类的完全限定名或别名。-->
2、注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身-->
3、查询功能的标签必须设置resultType或resultMap-->
4、resultType:设置默认的映射关系(当实体类属性名和数据库字段名一致的时候)-->
5、resultMap:设置自定义的映射关系(当实体类属性名和数据库字段名不一致的情况:一对多,多对一)-->
第三步:测试方法
测试结果:
实践二:测试所有信息