Mybatis问题

来源:8-1 商品添加之Dao层的实现

慕侠0844227

2018-03-19

翔仔老师,mybatis有几个问题困扰很久…还得叨扰。  

  1. 如果没有添加外键约束,是否还可以使用级联,比如entity中用实例类area代替area_id,代码不需要变动?

    http://img.mukewang.com/szimg/5aaefe590001022003120054.jpg

2.association或collection,里面的result,不需要对应数据库中的所有属性?只需要写要查询的部分属性即可?(如shop中有多个属性,但association中只用了3个)

http://img.mukewang.com/szimg/5aaefe6500010fb506410145.jpg

3.还有在productDao中,有个associton,关联了shop,column对应的是数据库中的owner_id,property却是ownerId,但是shop的entity中没有ownerId,只有一个personInfo的owner对象

http://img.mukewang.com/szimg/5aaefefd00010fb506410145.jpg

4.映射中的column和property到底是什么?有些是本表的属性,有些却对应了外表的属性,column使用主键还是外键?或者都可以?

写回答

2回答

翔仔

2018-03-19

具体详见源码

	<resultMap type="com.imooc.o2o.entity.Shop" id="shopMap">
		<id column="shop_id" property="shopId" />
		<result column="shop_name" property="shopName" />
		<result column="shop_desc" property="shopDesc" />
		<result column="shop_addr" property="shopAddr" />
		<result column="phone" property="phone" />
		<result column="shop_img" property="shopImg" />
		<result column="priority" property="priority" />
		<result column="create_time" property="createTime" />
		<result column="last_edit_time" property="lastEditTime" />
		<result column="enable_status" property="enableStatus" />
		<result column="advice" property="advice" />
		<association property="area" column="area_id"
			javaType="com.imooc.o2o.entity.Area">
			<id column="area_id" property="areaId" />
			<result column="area_name" property="areaName" />
		</association>
		<association property="shopCategory" column="shop_category_id"
			javaType="com.imooc.o2o.entity.ShopCategory">
			<id column="shop_category_id" property="shopCategoryId" />
			<result column="shop_category_name" property="shopCategoryName" />
		</association>
		<association property="owner" column="user_id"
			javaType="com.imooc.o2o.entity.PersonInfo">
			<id column="user_id" property="userId" />
			<result column="name" property="name" />
		</association>
	</resultMap>

product里面就不需要shop相关的信息就不用了,shop里面用到owner就如上面一样嵌套即可。

1
1
慕侠0844227
非常感谢翔仔老师的耐心回复!
2018-03-19
共1条回复

翔仔

2018-03-19

同学好,

  1. 可以的,这个mybatis只是用来体现组合,即对象A是对象B的成员变量,仅用来表达组合关系,和级联没有关系

  2. 是的,只需要写用到的那部分,具体详见之后的操作

  3. column对应的是数据库里的列,tb_shop有这列

  4. 同上,column跟主外键没关系,你看看上面的只是id标识了是外键,仅此而已

PS:同学我真诚建议你利用课余时间来学一下mybatis,其实上面的问题都是mybatis的基础,学一下即可。此外,我看到同学进度有点慢,感觉同学可以再加快些,有些点不必过于纠结,先会用,留下映像,等完成了再自己系统学习一遍SSM,这样就有一种豁然开朗的感觉并且印象也会更深刻,就跟工作一样,先产出,之后再对感兴趣的点去自己往深处去学,这样比较好:)

0
3
慕侠0844227
回复
翔仔
最后再麻烦下老师,这个owner对象,需要嵌套一个association吗?在shop的association里面
2018-03-19
共3条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程