mybatis简单查询,resultType及resultMap查询使用

         今天偶尔看一下mybatis一些知识,简单理解分享交流记录一下,错误指出还请指正交流大笑

 在mybatis持久层框架其实比hibernate最大的特点是sql我们可以灵活编写,以满足我们业务变化。简单的单表查询很简单这里不在叙说,那么关联查询应该怎么做呢?

下面我们就举一个简单的例子:

  平时我们熟悉的user(用户)与orders(订单),如下图:


业务需求,我们想查询订单及用户信息怎么查询呢?我们可以用2种方法,一个使用resultType或resultMap(使用动态代理方式):

1)resultType:我们首先分析,订单表中并没有用户姓名地址等信息,所以我们就需要进行关联表查询,我们使用resultType进行映射查询(注意:此种映射方式实体类要与我们数据库字段一致)。



首先我们创建一个pojo类用于查询映射使用,如下,定义一个po类继承查询字段较多的表(经验,为什么继承?这是基础好好回忆一下微笑),然后声明所需要查询的字段。


创建一个查询接口,如下:(接口名称XXXMapper.java)


配置我们的配置文件:


注意:在我们使用动态代理时,接口定义与我们配置文件的命名空间名字一致。测试类进行测试:



2)使用resultMap进行查询:

步骤与resultType一样,简单说下区别,resultMap根据我们的业务需求进而定义我们的如下:在我们的订单中添加user属性用于进行表关联查询映射

   



然后在们的接口中编写查询接口


编写我们的测试类:


有以上可以知道使用resultType时我们需要定义一个业务需要的po类,而resultMap则注重要配置好业务之间的关系映射。

resultType:实现查询时,需要自定义pojopojo的属性名和sql查询列名一致。企业开发中resultType简单方便建议使用。

resultMap:可以将sql查询结果信息中部分属性映射到一个pojo中。需要程序员进行映射配置,比较麻烦。

针对一对一查询建议使用resultType

如果一对一查询要使用mybatis提供的延迟加载 功能,必须使用resultMap


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值