一对多,复杂表结构的查询展示

初学jfinal,一对多,复杂表结构的查询展示

场景如下:

2张表一对多,例如:user表 和 blog表,bolg中含有user_id。

现在页面循环user表,其中一列展示user下的多个blog

duobiaochauxn1.png

这就需要页面for循环嵌套,百度了一下jfinal相关的帖子,现在大致如下方式实现:

在User的model中实现一个查询Blogs的list的方法

User BaseUser<User>{

    List<Blog> (){
        tmp = get()Blog.dao.find(tmp)}
}

在service中查询:

List<Map<StringObject>> (){
   List<Map<StringObject>> resList = ArrayList<Map<StringObject>>()List<User> userList = ArrayList<User>()String querySql = userList = .find(querySql)(userList.size()>){
      (User user : userList){
         Map<StringObject> dataMap = HashMap<StringObject>()dataMap.put(user)List<Blog> blogsList = user.getBlogsList()dataMap.put(blogsList)resList.add(dataMap)}
   }
   resList}


返回controller后返回页面

#(for map : reslist)

<tr>

<td>map.user.name</td>

<td>

 #(for x : map.blogsList)

        x.blog_name

    #end

</td>

</tr>

#end


感觉上述方式在组织数据时非常复杂,想在前端页面中直接使用user.getBlogsList()这样的方法又不行(不知道是不是语法或者使用方式有问题)。不知道有不有更简单的方式,比如直接把从表作为主表的一个private属性,然后直接user.blogs就可以循环之类的,省去

评论区

iamdego

2019-06-12 18:08

后来我试了一下,在前端直接使用user.getBlogList()好像是可以的,只要保证方法的正确.
也就是不需要像我之前这样去组织麻烦的数据结构。
波总在https://www.jfinal.com/feedback/4059 这儿有回复这个问题

iamdego

2019-06-12 18:11

这样组织数据结构应该在接口开发、直接返回JSON数据等场景中应该是可以使用的。

iamdego

2019-06-12 18:14

粘贴的代码好像不能正常显示

JFinal

2019-06-12 22:35

@iamdego 看到你很多这方面的问题,加入俱乐部吧,大量可以帮助你的实际代码可以使用

一看全明白了,节省很多学习时间

iamdego

2019-06-13 08:31

@JFinal 昨天正在使用jfinal这块,开始不懂就问,后来自己花时间调试也是明白了一些,才了解到俱乐部中有资源,感谢