求:ibatis2.3中,怎样实现多张表联合查询呢?

发布于 2021-11-29 15:27:04 字数 492 浏览 782 评论 19

刚刚学习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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(19

奢望 2021-11-30 10:44:38

mybatis是这么用的么?

挽清梦 2021-11-30 10:44:38

ibatis,mybatis的好处就是直接xml里面写SQL,想怎么写就怎么写,定义好返回的映射关系就行,不定义也没关系,直接返回List<Map<String,String>>

一人独醉 2021-11-30 10:44:38

http://download.csdn.net/detail/wangyonglin1123/9319447

看这个API 上面都有详细的介绍,你对ibatis的一对多多对一机制还是不太熟悉,熟悉了就好了

鹤舞 2021-11-30 10:44:37

分两张表写吧 select order.*

from order,orderItem

where order.sn=orderItem.sn;

select orderItem.*
from order,orderItem
where order.sn=orderItem.sn;

或者建立一个总表合并这个两张表,或者让其中一表继承另一张 xml 配继承之后的表

返回就没问题

彩扇题诗 2021-11-30 10:44:36

这是因为有些公司的项目还是停留在ibatis。这个我们也不好说这样不好,因为有些项目要升级框架这个比较难,改动或是风险都比较大,所以很多公司还是一直ibatis了吧。新手不懂的还很多....

百思不得你姐 2021-11-30 10:44:33

既然是刚刚学习ibatis,为什么不直接学习Mybatis???

巡山小妖精 2021-11-30 10:44:32

这里用存储过程纯粹是多此一举。

另外分页需要手工写limit 或者包装sql 。

柒夜笙歌凉 2021-11-30 10:44:31

mybatis 的官网有完整的 petstore的例子,里面应该很全。

无声静候 2021-11-30 10:44:31

刚刚看到resultMap才知道原来有这么回事,我等下会再测试下的。这里还是感谢“huan”兄了。不知道huan兄有没有什么ibaits小开源项目或是例子供人参考的没,我觉得看例子学起来快点...囧。感谢了,我会自己努力的!!

拍不死你 2021-11-30 10:44:31

很感谢“huan”的回答。我能这样理解你的意思麽:我应该在Order.java中声明一个privae List<OrderItem> orderList; 然后在Order.xml中用resultMap关联起来。大体是这个意思吧? 我现在才看到ibatis开发指南中有提到这一点,但是例子里面好像看得不清楚。。我找了一些别人写的小例子很可惜都是对单张表的操作的,所以这个到现在还没会了.....

执手闯天涯 2021-11-30 10:44:28

i/mybatis 的亮点之一就是能够映射各种数据库关系,

向你这是是典型的一对多映射,order 里面应该有个orderitem的list,然后在xml文件中编写resultMap  确定其映射关系。官方手册中应该很清楚。

爱的那么颓废 2021-11-30 10:44:09

sql的联合查询我肯定会的,只是ibatis的xml中的配置倒是还不会,所以才来问的。单张表比较简单,多张表的例子没看到过,所以不会.我学ibatis是看别人例子学习的.

浮生未歇 2021-11-30 10:38:15

回复
配置可以让它默认去给你配,你专注写sql语句

屌丝范 2021-11-30 10:34:00

就和写sql 语句相似

巡山小妖精 2021-11-30 10:33:55

路过不好呀...如果amar兄会的话,也可以贴贴自己在ibatis中多表查询中一般是怎样实现的让其他兄弟学习学习呀!

三月梨花 2021-11-30 10:31:38

已经升级到mybatis的瞧瞧路过...

像你 2021-11-30 09:54:20

我后面看ibatis实战懂了,只是还是想说,您这样的答案是好答案,简单明了!谢谢啊!

苍暮颜 2021-11-30 09:28:39

采用下嘛,

草莓味的萝莉 2021-11-29 20:29:41

  我这里用的是mybaits的,两表查询在xml配置

<resultMap type="com.szy.bean.User" id="user_book" >
		<id property="id" column="id"/>
		<result property="userName" column="username"/>
		<result property="userAddress" column="useraddress"/>
		<association property="book" column="book_id"   resultMap="book"></association>
</resultMap>
在上面用association 关联了book的resultMap
<!-- book --> 
 <resultMap type="com.szy.bean.Book" id="book">
  <result property="bookName" column="book_name"/>
 </resultMap>

 <!-- 多表查询 -->

 <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>

实体bean为

public class User {

 private int id;

 private String userName;

 private String userAge;

 private String userAddress;

 private Book book;

 

我不知道ibatis怎么弄的,没实践过,但mybatis这样写是可以联表查的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文