当前位置: 首页 > 知识库问答 >
问题:

哪种数据格式适合将数据(左连接数据库查询的结果)从servlet传输到JSP?

满子实
2023-03-14

[使用通用语言处理器、MySQL、MVC、服务包、JSP]如果我从数据库 LEFT JOIN-ing 三个表(DAO 对象的方法内部)读取一些数据,我应该如何格式化该结果,以便我可以将其设置为请求属性(在 servlet 中)并转发到 JSP 页面?

实体(数据库中的表):

发布

@Entity
@Table(name = "post")
public class Post implements Serializable {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "post_id", unique = true, nullable = false)
    private Integer id; 

    @Column(name = "post_title", length=300, unique = false, nullable = false)
    private String title;

    @Column(name = "post_date", unique = false, nullable = false)
    private Date date;

    @Column(name = "post_summary", length=1000, unique = false, nullable = true)
    private String summary;

    @Column(name = "post_content", length=50000, unique = false, nullable = false)
    private String content;

    @Column(name = "post_visitors", unique = false, nullable = false)
    private Integer visitors;

    @ManyToOne
    @JoinColumn (name = "user_id", referencedColumnName="user_id", nullable = false)
    private User user;

    @ManyToOne
    @JoinColumn (name = "category_id", referencedColumnName="category_id", nullable = false)
    private Category category;

    @OneToMany(cascade = { ALL }, fetch = LAZY, mappedBy = "post")
    private Set<Comment> comments = new HashSet<Comment>();
...

实体注释

@Entity
@Table(name = "comment")
public class Comment implements Serializable {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "comment_id", unique = true, nullable = false)
    private Integer id; 

    @Column(name = "comment_title", length=300, unique = false, nullable = false)
    private String title;

    @Column(name = "comment_date", unique = false, nullable = false)
    private Date date;

    @Column(name = "comment_content", length=600, unique = false, nullable = false)
    private String content;

    @ManyToOne
    @JoinColumn (name = "user_id", referencedColumnName="user_id", nullable = false)
    private User user;

    @ManyToOne
    @JoinColumn (name = "post_id", referencedColumnName="post_id", nullable = false)
    private Post post;
...

实体用户

@Entity
@Table(name = "user")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "user_id", unique = true, nullable = false)
    private Integer id; 

    @Column(name = "user_name", length=45, unique = false, nullable = false)
    private String name; // "first_name" + ' ' + "last_name"    

    //URL address to user's image 
    @Column(name = "user_image", length=500, unique = false, nullable = true)
    private String image;

    @Column(name = "user_username", length=45, unique = false, nullable = false)
    private String username;

    @Column(name = "user_password", length=45, unique = false, nullable = false)
    private String password;
...

因此,我想创建一个方法,可能在<code>PostDAO</code>对象中,它看起来像这样:

public <SomeDataTypeFormat???> getPostsSummaries(){

   Query q = em.createNativeQuery("SELECT
        post_title,
        post_summary,
        post_date,
        COUNT(comment_id) AS comment_cnt,
        user.user_name
    FROM
        post
        LEFT JOIN user USING(user_id)
        LEFT JOIN comment USING(post_id)
    GROUP BY
        post_id
    ORDER BY
        comment_cnt DESC");
    ...
}

方法从数据库中的所有三个表中返回一些字段。我是否需要创建单独的类并将这些数据存储在该类的对象中?还是JSON(尽管我还没有使用它)?

做法是什么?对于由于连接多个表而获得的某些字段,从 servlet 到 JSP 的最简单使用和转发的数据格式是什么?

共有1个答案

汤枫
2023-03-14

这取决于您的目标;要将数据传输到浏览器,JSON和AJAX是一个不错的选择。要将数据传输到JSP(从Servlet),您可能需要一个数据传输对象(或者可能是一个不可变的值对象)。

 类似资料:
  • 我正在尝试开发一个android应用程序,它需要通过java servlet连接到远程数据库as400,并将JSON对象返回给用户。 这是我的DoGet方法代码: 在我通过eclipse启动servlet之后,它会停在“Class.forName(…)它给了我以下的错误:错误!1.爪哇。sql。SQLException:应用程序请求者无法建立连接。(连接超时:连接) 并且似乎无法连接到服务器,但我

  • 我正在和其他同学完成一个项目,我们被卡住了。在我们的登录servlet中,我们连接到数据库并检索与电子邮件匹配的数据 我们需要这样传递信息:数据库--- 谢谢 LogInServlet 配置文件Servlet 配置文件HTML

  • 问题内容: 当用户最初单击按钮时,将运行查询,并将每一行放入JPanel中并添加到显示中,以供用户查看。哪个工作正常。 我的问题是,我希望用户能够根据它们提供的值(通过JTextField)过滤这些结果,并且我希望显示的记录随着JTextField值的更改而更新。每次更改JTextField时都会形成并执行我的查询,但是我找不到更新显示记录的方法。 任何帮助,将不胜感激。 该代码花了一些时间进行编

  • 问题内容: 我需要将数据从一个表复制到另一个表。这两个表几乎具有相同的结构,但是位于不同的数据库中。 我试过了 我尝试此操作,但跨数据库出现错误…未实现 问题答案: 这是一个非常简单的任务。只需为此目的使用dblink: 如果您需要定期从外部数据库中获取数据,明智的做法是定义服务器和用户映射。然后,您可以使用较短的语句:

  • 本文向大家介绍php连接oracle数据库及查询数据的方法,包括了php连接oracle数据库及查询数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php连接oracle数据库及查询数据的方法。分享给大家供大家参考。具体分析如下: php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把

  • 我正在为我的网站做一个注册页面。我在PHPMyAdmin中维护一个包含7个字段的数据库(id、用户名、密码、电子邮件、活动、代码和日期)。我正在使用代码和活动字段来实现电子邮件激活。注册表单使用post方法获取4个参数(名称、电子邮件、密码和重新键入密码),并将提交按钮的信息传递给PHP代码,以检查用户是否是新的,电子邮件ID是否应该是新的,并在单击提交按钮后检查空字段。PHP代码如下所示: 当我