MyBatis进阶中,关于驼峰命名转换、关联查询关系有些疑问。

MyBatis进阶中,关于驼峰命名转换、关联查询关系有些疑问。

1、驼峰命名转换是不是通过我设置的property和column才得以实现转换的?

2、1个班级对应n个学生,1个学生不是对应1个班级吗,下面则学生与班级多对一怎么理解?

5、定义实体类和Mapper xml文件,在测试类中查询一班的学生信息并显示(使用一对多关联查询完成)

6、继续完善实体类和Mapper xml文件,在测试类中查询,根据学生查询到班级信息并显示(使用多对一关联查询完成)


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、select * from t_goods_detail limit 0,20;这条语句执行后,非主键的字段和属性会默认映射,然后就有值。 但是这里goods_id列被使用到了对象关联上,导致GoodsDetail对象中goodsId没有得到正确的赋值,所以我们需要添加上这句话,完成字段的映射。

https://img1.sycdn.imooc.com//climg/61501c5709d6b8a210720272.jpg

2、在同学的代码中已经完成了字段的映射,所以是不会报错的

https://img1.sycdn.imooc.com//climg/61501c3309b3f9d910230226.jpg

祝学习愉快~

  • 童真模式启动 提问者 #1

    老师,那个不知道为什么这边代码突然红了,这是怎么怎么回事啊,类明明都在的啊。

    https://img1.sycdn.imooc.com//climg/61514708097c537718510815.jpg

    2021-09-27 12:23:19
  • 童真模式启动 提问者 #2

    报红的问题我解决了。写<result>可以,写<id>也可以,这两个标签意义上有什么不同吗,既然一样为什么还要有2个 呢?

    2021-09-27 14:11:25
  • 同学你好,子元素id代表resultMap的主键,而result代表其属性。

    在自定义的resultMap中第一列通常是主键id,两者具体有什么区别可参考如下:

    1、id和result都是映射单列值到一个属性或字段的简单数据类型。在字段映射方面的功能是一样的

    2、除此之外<id/>有一个额外的功能,Mybatis通过一个或者多个<id/>字段可以唯一确定一条记录

    祝学习愉快~



    2021-09-27 15:48:07
好帮手慕小班 2021-09-24 18:28:58

同学你好,1、驼峰命名转换还可以在配置文件中配置,默认开启驼峰命名转换

https://img1.sycdn.imooc.com//climg/614da67c09ac4ad208790287.jpg

<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

    2、关于学生与班级的一对多,同学可以这样理解,在一个班级下存在多个学生,对应就是一个学生集合,也就是可以使用关联查询来完成班级下的学生查询。

祝学习愉快~

  • 提问者 童真模式启动 #1

    1、它的判断依据是什么,不是根据property=…、column=…?

    2、一对多我理解,但是这个“使用多对一关联查询完成”多对一不是太能理解。

    3、这里<resultMap>没有设置<result>为什么上面一个classNo不为空 ?课程中的案例没设置就是空的啊。

    https://img1.sycdn.imooc.com//climg/614daee00917ad5c03800454.jpg

    2021-09-24 18:58:54
  • 同学你好,

    1、在对象关联的情况下,是通过<resultMap>来说明一对多的映射逻辑的,这里同学回顾这部分的课程:https://class.imooc.com/lesson/2089#mid=49543

    2、举例说明:当一个班级里面对应多个学生,这是一对多;反过来,多个学生对应一个班级,这是多对一

    3、猜测同学的实体类中的属性和表中的字段是一一对应的,符合驼峰命名的转换。即是数据库表中的“_”分割的位置,属性名对应字母转换为大写。那么在MyBatis没有指定result时,也是可以自动将列转换为属性

    祝学习愉快~

    2021-09-25 10:17:31
  • 3、课程中的案例提到goods_id属性赋值给了另外一条SQL语句,因此当前SQL语句goods_id就是空的,因此须要配置<result…>。但自由编程中,我没有配置它,classId却不空,这里不是太明白。

    <>
        </>
    
        <></>
    </>
    <>
        select from t_goods_detail 0,20
    </>


    <>
        </>
        </>
    </>
    <>
        SELECT FROM t_student
    </>



    2021-09-26 10:42:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师