mybatis返回结果处理
目录
准备工作
本文以实体类为Car对象进行统一分析处理,其对应的数据库中的表如下
java中的Car对象如下:
返回对象为pojo实体类(Car)
对应的接口
对应的xml文件
resultType我个人的理解就是我们查询sql语句返回的结构集的行的玩意,也就是一个记录
对应的测试代码:
返回集合对象(List<Car>)
当查询的记录条数是多条的时候,必须使用集合接收。如果使用单个实体类接收会出现异常。如果返回的是一条记录可以用集合接收
对应的接口
对应的xml文件
对应的测试代码:
返回Map
当返回的数据,没有合适的实体类对应的话,可以采用Map集合接收。字段名做key,字段值做value。查询如果可以保证只有一条数据,则返回一个Map集合即可。
对应的接口
对应的xml文件
resultMap="map",这是因为mybatis内置了很多别名。【参见mybatis开发手册】
对应的测试代码:
当然,如果返回一个Map集合,可以将Map集合放到List集合中吗?当然可以,这里就不再测试了。
反过来,如果返回的不是一条记录,是多条记录的话,只采用单个Map集合接收,这样同样会出现之前的异常:TooManyResultsException
返回List<Map>
查询结果条数大于等于1条数据,则可以返回一个存储Map集合的List集合。List<Map>等同于List<Car>
对应的接口
对应的xml文件
对应的测试代码:
返回Map<String,Map>
拿Car的id做key,以后取出对应的Map集合时更方便。
对应的接口
@MapKey("id")指定一个字段作为返回Map中的key,一般使用唯一键来做key
对应的xml文件
对应的测试代码:
返回总记录条数
需求:查询总记录条数
对应的接口
对应的xml文件
对应的测试代码:
要点
- (1)resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。我们在前面的 CRUD 案例中已经对此属性进行过应用了。
- (2)需要注意的是,它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名。没有注册过的必须使用全限定类名。例如:我们的实体类此时必须是全限定类名
- (3)同时,当是实体类名称是,还有一个要求,实体类中的属性名称必须和查询语句中的列名保持一致,否则无法实现封装。
- 点赞
- 收藏
- 关注作者
评论(0)