idea__MyBatis框架18——注解开发(一对一)


开始讲一对一之前,我们先来讲一下实体类属性和数据库表中列的对应关系

在我们之前的xml配置开发的时候,我们讲过,如果实体类的属性名跟数据库的列名不对应的解决方法,详情看《idea__MyBatis框架06——返回值深入》

接下来我们先讲一下注解开发,实体类的属性名跟数据库的列名不对应的解决方法。

一、实体类属性和数据库表中列的对应关系

  • 1、我们修改两个实体类属性名

在这里插入图片描述

  • 2、我们回到我们测试类,运行查询所有方法,我们发现,id跟address没有被封装进去,因为我们的实体类属性名跟数据库的列名没有对应。

在这里插入图片描述

  • 3、我们在我们之前的xml配置文件开发中,解决这个问题的方法是有两种,同样在我们的注解开发中也同样有两种解决方法:第一种跟xml配置文件开发是一样的,在sql查询语句中,使用别名as;第二种是使用Results注解进行配置,如图:

在这里插入图片描述

  • 4、配置完了之后,我们再回到我们的测试类,运行我们的查询所有测试方法,数据成功封装进去了,没有问题:

在这里插入图片描述

  • 5、但是我们再运行我们的根据id查询用户方法,我们发现又没有封装进去,原因是我们只是在findAll方法进行了Results注解配置,并没有在findById方法进行注解配置:

在这里插入图片描述

  • 6、那我们要怎么解决这个问题呢?是不是又要重新再写一遍呢?其实是不用的,我们可以进行引用,我们回到findAll方法,给它加一个在Results注解中给它加一个id

在这里插入图片描述

  • 7、接着在findById方法中使用@ResultMap注解进行引用,这个@ResultMap是可以引用多个的:

在这里插入图片描述

  • 8、接着回到测试类,运行findById方法,没有问题,引用成功,封装成功:

在这里插入图片描述

二、一对一

  • 1、我们创建一个Account实体类,并生成get,set,toString方法:

在这里插入图片描述

  • 2、创建对应的接口IAccountDao,并创建查询所有方法:

在这里插入图片描述

  • 3、接着创建AccountTest测试类,如图:

在这里插入图片描述

  • 4、运行我们测试类的findAll方法,我们发现我们的账户是查出来了,但是我们的User为null,这是因为我们还没有建立对应的关系:

在这里插入图片描述

  • 5、回到我们的IAccountDao接口,我们建立一个对应的关系,或者说是建立一个查询的映射,如图:

在这里插入图片描述

  • 6、建立完成,我们回到我们的AccountTest测试类,再次运行我们的测试方法,没有问题,User出来了:

在这里插入图片描述

————————
创作不易,如觉不错,随手点赞,关注,(* ̄︶ ̄),谢谢~~
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值