如何在列表页中同时显示多个关联表中的信息

dreampeter 发布于 2015/06/26 23:59
阅读 268
收藏 0

本人jfinal初学者,看过实例后有一个疑问。关于多个互相关联的表,如何在列表页中显示相关的信息呢?

简单举例:
表1[Article]
id, title, content, pubtime, aid
表2[Author]
aid, name
关联关系:article.aid=author.aid
要实现的功能是在文章列表页中同时显示标题和作者,如下:
序号    标题    发布时间    作者

官方实例中代码如下:
public Page<Blog> paginate(int pageNumber, int pageSize) {
return paginate(pageNumber, pageSize, "select *", "from blog order by id asc");
}

如果只是将此处的sql修改成select a.*, b.name from article a, author b where a.aid=b.aid order by id asc,应该是解决不了问题,因为方法返回的仍旧是<Article>类型,而在jsp中无法实现author.name来显示作者姓名。

求解,感谢

加载中
0
JFinal
JFinal

直接写表关联的 sql 即可:

String sql = "select ar.*, au.name from article ar innerjoin author au on ar.aid = au.aid";
List<Article> list = Article.dao.find(sql);
String authorName = list.get(0).getStr("name");
    关联查询的author的结果会直接被放到 Article 这个 model中,如果两个表中有相同的字段名,使用 as 取个别名即可,如:select ar.*, au.name as authorName,获取时就是author.getStr("authorName") 。此外,还有另一种表关联查询方式,详见 jfinal 手册,在此下载: http://www.jfinal.com 
返回顶部
顶部