java映射_[MyBatis]-MyBatis框架-04-输入映射和输出映射

MyBatis

输入映射和输出映射

传递POJO的包装对象:输入映射

开发步骤:

a.需求分析

b.根据需求定义包装的POJO对象

c.根据需求定义mapper.java接口和相应的mapper.xml配置文件

d.在sqlMapConfig.xml中加载配置文件并编写测试代码进行测试

a.需求分析

完成用户信息的综合查询 需要传入的查询条件比较复杂(可能包含用户信息,或者其他相关的详细信息, 比如与用户相关的商品信息、订单信息等)

b.根据需求定义包装的POJO对象

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通的JavaBeans,是为了避免和EJB混淆所创造的简称。

  • 查询到结果后把查询到的复杂数据进行封装

UserCustom.java:

public 
  • 查询条件比较复杂:对查询条件进行封装

UserQueryVO.java:

public 

c.根据需求定义mapper.java接口和相应的mapper.xml配置文件

UserCustomMapper.java:

public 

UserCustomMapper.xml:

206f79731ab78499df87bc318d22aca2.png

d.在sqlMapConfig.xml中加载配置文件并编写测试代码进行测试

加载配置文件:

<package name="com.guigu.mybatis.c_mapper"></package>

测试代码:

UserCustomMapperTest

测试结果:

9da25400f9c9791682a6f568e20a4573.png

输出映射

a.ResultType

ResultType就是把查询到的结果封装为指定的对象,然后输出

需要查询的列名和POJO中的属性必须一致,否则封装不成功,从而导致查询不到数据

b.输出简单类型

需求:查询用户的总数(在上述案例的基础上完成)

  • 在UserCustomMapper.xml中配置

1f3b9ef50220a3042d69858c372e287b.png
  • 在UserCustomMapper.java中添加方法

a14deabab9997aa2dba69ce1eb8a9998.png
  • 编写测试代码进行测试

9babc22a595cd9a9964553b13287a043.png

测试结果:

5a17c5f4a8c8c3c010b68044cc6272e4.png

c.输出POJO对象和POJO列表

需求:查询用户的总数(在上述案例的基础上完成)

  • 在UserCustomMapper.xml中配置

0ec449c1f736d56dc029ef04a4ad7b6a.png
  • 在UserCustomMapper.java中添加方法

6f99a66e7f50689b66d39941dae95ba5.png
  • 编写测试代码进行测试

79d49e61767b45a8f955c81813054f38.png

测试结果:

5608bebffb876dea473077c469da59a2.png

27119923494c582f7fc1398f24724066.png

测试结果:

7bb5459806a3f95321ba24af0ac2fea4.png

d.ResultMap

问题分析:在实际开发中针对多表查询,为了区分相同列名而导致查询结果的二义性,通常会为查询出来的列名起别名,但如果是通过resultType进行映射无法匹配相应的数据,导致数据查询失败

3f277be36796061e7eeb7f6d2eb8df51.png

测试结果:虽然数据能够查询,但结果且无法正确映射到输出结果中,导致查询失败

a955454afa21b2a6811c02f1768c0e43.png

因此为了解决上述问题,提出解决方案:如果查询出的列名和POJO属性不一致,可以通过定义一个resultMap定义类名和POJO进行映射完成查询。

0067f175a898368355a8bd154da826c9.png
  • 在UserCustomMapper.xml中配置

4dac66cab4de7aa04751b35245c739b2.png
  • 在UserCustomMapper.java中添加方法

5562611e47354f46e27e1e01af02cbc9.png
  • 编写测试代码进行测试

8a2c81cd50e09f51d9519b31eb417091.png

测试结果:数据正常显示

a93df556e3336d2d0fd2d4bc8501456f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值