【问题标题】:Print result of query to jsp table Java Spring MVC jsp将查询结果打印到 jsp 表 Java Spring MVC jsp
【发布时间】:2019-03-05 06:20:48
【问题描述】:

我需要打印给 55 岁以上的人,但它会打印 DB 中的每个人。不知道怎么回事。

@Override
    @SuppressWarnings("unchecked")
    public List<Book> old1() {
        Session session = this.sessionFactory.getCurrentSession();
//        List<Book> bookListt = session.createQuery("SELECT BOOK_TITLE, BOOK_AUTHOR, birthday FROM bookmanager.books WHERE birthday <= DATE_SUB(CURDATE(), INTERVAL 15 year)").list();
        List<Book> bookList1 = session.createSQLQuery("SELECT ID, BOOK_TITLE, BOOK_AUTHOR, born FROM bookmanager.book  WHERE born <= DATE_SUB(CURDATE(), INTERVAL 10 year))").list();

        return bookList1;
    }

控制器:

@RequestMapping(value = "books", method = RequestMethod.GET)
    public String old(Model model){
        model.addAttribute("book", new Book());
        model.addAttribute("old", this.bookService.listBooks());

        return "books";
    }

我尝试打印那个人,但这是错误的。打印数据库中的所有人员

我该如何解决?

<c:if test="${!empty old1}">
    <table class="tg">
        <tr>
            <th width="80">ID</th>
            <th width="120">Title</th>
            <th width="120">Author</th>
            <th width="120">Price</th>
            <th width="120">born</th>
            <th width="60">Edit</th>
            <th width="60">Delete</th>
        </tr>
        <c:forEach items="${old1}" var="book1">
            <tr>
                <td>${book1.id}</td>
                <td><a href="/bookdata/${book1.id}" target="_blank">${book.bookTitle}</a></td>
                <td>${book1.bookAuthor}</td>
                <td>${book1.price}</td>
                <td>${book1.born}</td>
                <td><a href="<c:url value='/edit/${book1.id}'/>">Edit</a></td>
                <td><a href="<c:url value='/remove/${book1.id}'/>">Delete</a></td>
            </tr>
        </c:forEach>
    </table>
</c:if>

【问题讨论】:

  • [DATE_ADD(CURDATE()]
  • @TimBiegeleisen IDEA 下划线此部分为红色。
  • @TimBiegeleisen 和没有方括号的效果还是一样的。更多选择?
  • 请将示例数据添加到您的问题中,然后添加查询的当前输出。
  • @TimBiegeleisen 查询工作正确

标签: java mysql hibernate date model-view-controller


【解决方案1】:

我不确定您的 Hibernate/Java 代码是否完全正确,但您的 MySQL 查询看起来不正确。如果您想定位所有其born 字段距当前日期超过 55 年的书籍,请使用以下命令:

SELECT id, bookTitle, bookAuthor, birthday
FROM Book
WHERE born <= DATE_SUB(CURDATE(), INTERVAL 55 year)
ORDER BY born;

【讨论】:

    【解决方案2】:

    将查询更改为条件。本机 sql 查询不起作用。

    public List<Book> listBooks() {
            Session session = this.sessionFactory.getCurrentSession();
    
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 55);
    
            List<Book> bookList = session.createCriteria(Book.class).add(Restrictions.le("born", calendar.getTime())).list();
    
    
            return bookList;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多