Mybatis Ibatis 嵌套查询XML配置怎么理解

<resultMapid=”blogResult”type=”Blog”><collectionproperty="posts"javaType=”ArrayList”c... <resultMap id=”blogResult” type=”Blog”>
<collection property="posts" javaType=”ArrayList” column="blog_id"
ofType="Post" select=”selectPostsForBlog”/>
</resultMap>
<select id=”selectBlog” parameterType=”int” resultMap=”blogResult”>
SELECT * FROM BLOG WHERE ID = #{id}
</select>
<select id=”selectPostsForBlog” parameterType=”int” resultType="Post">
SELECT * FROM POST WHERE BLOG_ID = #{id}
</select>
我知道肯定是有一张BLOG 博客表(类似有字段id),一张POST文章表(类似有字段id,bid),而且Java类中Blog类中肯定有个post的list的,但我有几个疑问.
selectPostsForBlog中的#{id}的值就是selectBlog的中 #{id}吗?
selectPostsForBlog中resultType="Post"返回的不是一个list为什么这里只写Post?
blogResult中的column="blog_id"为什么这么写,为什么通过BLOG表中的Id这样一写,到底怎么理解?
第二个问题:SELECT * FROM POST WHERE BLOG_ID = #{id}照道理会返回很多条记录(很多post的blog_id都是#{id}),selectPostsForBlog中resultType="Post"中只是Post?
第三个问题,换个说法现在又教师表T(t_id,t_name)和学生表S(s_id,s_name,s_t_id);教师类里有个List<Student> students,
<collection property="students" javaType=”ArrayList” column=""
ofType="Student" select=”selectStudentsForTeacher”/>
</resultMap>
那么column该怎么写,是写t_id,还是s_t_id?写了又什么用呢,
SELECT * FROM Student WHERE s_t_id= #{id}这句话会用到吗?
展开
 我来答
阳光的桃子250
2015-11-19 · TA获得超过1500个赞
知道大有可为答主
回答量:1827
采纳率:16%
帮助的人:1217万
展开全部
1.右键单击桌面上的“我的电脑”,找到“设备管理器”并单击打开。

2.在设备管理器菜单中找到“网络适配器”,并点击前面的三角,这时出现了的就是网卡驱动。右键单击网卡驱动,选择“更新驱动程序软件”。

3.出现了两个选项,选择手动查找驱动程序并且安装,下一步选择刚才下载的驱动程序安装。

4.安装完成后,重启电脑。如果能够联网的情况下,可以让电脑自动检测并且安装,也可以通过鲁大师、驱动精灵、驱动人生等自动检测安装。
元小翠044
2016-01-25 · TA获得超过8.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:89%
帮助的人:3197万
展开全部
这个区别不是很大,最主要的区别就是mybatis简化了编码的过程,不需要去写dao的实现类,直接写一个dao的接口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后在service里面直接调用dao就可以了,但是ibatis则不可以,必须要写dao的实现类,再写个return getSqlMapClientTemplate().queryForList()神马的,mybatis是ibatis的升级版本。还有些区
别就是xml里面的sql语句的写法有些小变化,但是不大。

Mybatis 实现了接口绑定,使用更加方便。
在ibatis2.x中需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动生成接口的具体实现,使用起来变得更加省事和方便。这可以说是Mybatis最重要的改进。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuqing0826
推荐于2016-09-03 · TA获得超过692个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:730万
展开全部
  1. selectPostsForBlog中的#{id}的值就是selectBlog的中 #{id}吗?

这个id是你java调用查询时候传递过来的参数

只是用了相同的标识,两者没有联系,你可以修改java代码改成ids,然后这里修改成ids也行

 

2.selectPostsForBlog中resultType="Post"返回的不是一个list为什么这里只写Post?

 

这意思是直接返回的是一个Post对象,不是返回list

 

3.blogResult中的column="blog_id"为什么这么写,为什么通过BLOG表中的Id这样一写。

 

这个是根据你数据库字段来的,你这两个表的字段应该定义的不一样。

 

 

这都是很基础的问题.......

更多追问追答
追问
这里字打不下,放在补充问题里了,帮我看看。
追答
第二个问题:SELECT * FROM POST WHERE BLOG_ID = #{id}照道理会返回很多条记录(很多post的blog_id都是#{id}),selectPostsForBlog中resultType="Post"中只是Post?

你学过数据库么???? 都按照主键id查询了,怎么可能会有多条记录的呢?

第三个问题

column根据你自己需要配,一般都是主键

写了有什么用? 呵呵,你开发干啥用那写了就有啥用。

select=”selectStudentsForTeacher”/> 会用到这个select语句
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式