求:ibatis2.3中,怎样实现多张表联合查询呢?
刚刚学习ibatis2.3,
单张表的查询并显示在JSP页面上的功能实现了。
多张表的联合查询一直实现不了,所以来求问了。
环境是这样的:
order订单表(id,sn,order_time)
orderItem订单详情(id,sn,merchandise_name,merchandise_price)
如果用
sql语句我们可以这样写:
select order.*,orderItem.*
from order,orderItem
where order.sn=orderItem.sn;
疑问来了,我不知道
xml要如何写。
有人说多表查询建议用
存储过程
封起来。假如我用存储过程封起来,那xml又如何写了?
这样多张表的查询,实际应用中肯定是存在的,请兄弟门告诉实际大家是怎样处理这个问题的了?假如又设计到结果集的分页那应该怎样处理?分页问题大家可以给关键字给我,我可以自己搜索看看。
真心感谢了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(19)
mybatis是这么用的么?
ibatis,mybatis的好处就是直接xml里面写SQL,想怎么写就怎么写,定义好返回的映射关系就行,不定义也没关系,直接返回List<Map<String,String>>
http://download.csdn.net/detail/wangyonglin1123/9319447
看这个API 上面都有详细的介绍,你对ibatis的一对多多对一机制还是不太熟悉,熟悉了就好了
分两张表写吧 select order.*
from order,orderItem
where order.sn=orderItem.sn;
select orderItem.*
from order,orderItem
where order.sn=orderItem.sn;
或者建立一个总表合并这个两张表,或者让其中一表继承另一张 xml 配继承之后的表
返回就没问题
这是因为有些公司的项目还是停留在ibatis。这个我们也不好说这样不好,因为有些项目要升级框架这个比较难,改动或是风险都比较大,所以很多公司还是一直ibatis了吧。新手不懂的还很多....
既然是刚刚学习ibatis,为什么不直接学习Mybatis???
这里用存储过程纯粹是多此一举。
另外分页需要手工写limit 或者包装sql 。
mybatis 的官网有完整的 petstore的例子,里面应该很全。
刚刚看到resultMap才知道原来有这么回事,我等下会再测试下的。这里还是感谢“huan”兄了。不知道huan兄有没有什么ibaits小开源项目或是例子供人参考的没,我觉得看例子学起来快点...囧。感谢了,我会自己努力的!!
很感谢“huan”的回答。我能这样理解你的意思麽:我应该在Order.java中声明一个privae List<OrderItem> orderList; 然后在Order.xml中用resultMap关联起来。大体是这个意思吧? 我现在才看到ibatis开发指南中有提到这一点,但是例子里面好像看得不清楚。。我找了一些别人写的小例子很可惜都是对单张表的操作的,所以这个到现在还没会了.....
i/mybatis 的亮点之一就是能够映射各种数据库关系,
向你这是是典型的一对多映射,order 里面应该有个orderitem的list,然后在xml文件中编写resultMap 确定其映射关系。官方手册中应该很清楚。
sql的联合查询我肯定会的,只是ibatis的xml中的配置倒是还不会,所以才来问的。单张表比较简单,多张表的例子没看到过,所以不会.我学ibatis是看别人例子学习的.
回复
配置可以让它默认去给你配,你专注写sql语句
就和写sql 语句相似
路过不好呀...如果amar兄会的话,也可以贴贴自己在ibatis中多表查询中一般是怎样实现的让其他兄弟学习学习呀!
已经升级到mybatis的瞧瞧路过...
我后面看ibatis实战懂了,只是还是想说,您这样的答案是好答案,简单明了!谢谢啊!
采用下嘛,
我这里用的是mybaits的,两表查询在xml配置
<!-- 多表查询 -->
<select id="selectUserAndBooks" resultMap="user_book" >
select u.id,u.username ,u.useraddress,b.book_name from user u right outer join book b on u.id= b.book_id
</select>
public class User {
private int id;
private String userName;
private String userAge;
private String userAddress;
private Book book;
我不知道ibatis怎么弄的,没实践过,但mybatis这样写是可以联表查的