Mybatis中的映射学习,resultMap,resultType,get,set

mybatis中resultMap用来做结果映射,就是将我们的sql查询结果和查询条件映射到对象中,万物皆对象嘛,就可以把数据库操作融入java代码编写

一、先来说说resultType
  1. sql查询的结果无非是一张表,最小的表就是一行一列,这时候可以直接用java库中提供的Integer、String等扩展类型进行接收
  2. 多行多列,可以用Map集合来接收
  3. 当然也可以使用自定义类,但要注意查询结果这张表的字段要和自定义类的属性名相同,不同的话,肯定是想办法改查询结果的字段名呗,那必须是使用as取别名

在这里插入图片描述

二、再来说说resultMap
  1. resultMap 可以用来映射一个自定义类,最基本的使用,sql查询结果找到 esult中同名的column,然后找到对应的property进行赋值,最后的返回类型为type属性写明的自定义类
    在这里插入图片描述
  2. 在开发过程中发现一个有意思的事情,发现返回值一直是数据库表的字段名而不是model类的属性名,查了几篇文档,都没有解决问题,我试着把resultMap里面的result直接注释掉,发现并没有什么影响,程序依然正常,很明显,有一些操作绕过了我的result,换言之,我的result失效了,我试着一点点改代码,进行测试,最终找到了问题。之前在定义类的时候我用了下划线命名st_class,和数据库表的字段名一致,后来改成了驼峰命名stClass,但是我自动生成的get,set方法却没改,只是改了报红的一个属性名
    在这里插入图片描述
    在这里插入图片描述
    原来mybatis做映射的时候会先解析get、set方法,拿到get、set后面的名字,new一个空对象,如果在result中找到查询结果column对应的对象属性property,就会调用set方法,如果没找到对应属性,或者对应属性的set方法,就会直接去找查询结果字段名所对应的get和set方法,就会使用set方法来进行赋值,使用get返回对象数据,返回的数据中的属性名为get方法后面跟着的方法名字例如
    getStuCollege() 那么属性名就为stuCollege,getstu_college(),那么属性名就为stu_college
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值