MyBatis查询处理

定义:MyBatis查询处理就是指:mybatis如何将select结果集数据封装成java对象

补充:mybatis是一个ORM框架,实现了ORM思想;所谓的ORM思想就是:将Java虚拟机中的Java对象映射到数据库表中一行记录,或是将数据库表中一行记录映射成Java虚拟机中的一个Java对象;mybatis就实现了这种思想;

MyBatis查询处理就是说:mybatis框架如何将select查询结果集封装为java对象?

主要分为以下几种情况:

假设:数据库表:t_car        pojo类:Car

第一种情况:数据库表有对应的实体类也就是pojo类;

1、如果只返回一条记录,那么dao接口中方法的返回值类型就是该pojo类,例如:Car

2、如果返回多条记录,返回值类型就使用List集合,例如:List<Car>

第二种情况:数据库表没有对应的实体类

1、如果只返回一条记录,那么dao接口中方法的返回值类型就是Map,例如:Map<String,Object>

2、如果返回多条记录,返回值类型可以使用List集合,例如:List<Map<String,Object>>

3、如果返回多条记录,返回值类型也可以使用Map集合,例如:Map<Long,Map<String,Object>>;这种方式封装数据相对于List集合更加容易查询数据,但是需要结合@Mapkey注解一起使用;

实现:使用@Mapkey注解作用在dao接口的方法上,@Mapkey("")里面指定小map集合中哪个key对应的值作为大map集合的key

@MapKey("id")
Map<Long,Map<String,Object>> selectAllRetMap();

补充:resultMap结果映射

应用场景:MyBatis的SQL配置文件中,为了将select查询结果集能够正确的封装成pojo对象,有时候需要使用as关键字给select结果集字段起别名,目的就是:别名要和pojo对象的属性名对应上,如果某个字段和属性名对应不上,那么封装之后的java对象该属性名对应的值为null,只有对应上,这样才能够正确的封装成java对象;

那么,查询结果的列名和java对象的属性名对应不上怎么办?

第一种方式:as 给列起别名

第二种方式:使用resultMap进行结果映射

第三种方式:开启驼峰命名自动映射(配置settings)推荐

在mybatis-config.xml文件中进行配置:

<!--放在properties标签后面-->
<settings>
  <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

前提:属性名遵循Java的命名规范,数据库表的列名遵循SQL的命名规范

Java命名规范:首字母小写,后面每个单词首字母大写,遵循驼峰命名方式。

SQL命名规范:全部小写,单词之间采用下划线分割

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值