初学jfinal,一对多,复杂表结构的查询展示
场景如下:
2张表一对多,例如:user表 和 blog表,bolg中含有user_id。
现在页面循环user表,其中一列展示user下的多个blog
这就需要页面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就可以循环之类的,省去
项目:JFinal
也就是不需要像我之前这样去组织麻烦的数据结构。
波总在https://www.jfinal.com/feedback/4059 这儿有回复这个问题