java web想在网页展示数据库,但是显现的是一个对象

已经建好了一个Book类,get、set方法已经写好ResultMap已建好,在xml中我写的查询方法是<selectid="selectAll"resultMap="R... 已经建好了一个Book类,get、set方法已经写好
ResultMap已建好,在xml中我写的查询方法是
<select id="selectAll" resultMap="ResultMap" parameterType="java.lang.String">
select * from book where book_name=#{bookName}
</select>

然后DAO接口
List<Book> selectAll(@Param("book_name")String bookName);

IService中
public List<Book> getBookId(String bookName){
return dao.selectAll(bookName);}

Controller
@RequestMapping(method=RequestMethod.GET)
public String getAll(Model model){
model.addAttribute("id",iService.getBookId("数据库"));
return "/aa";}

在浏览器中输入localhost,展示的却是[com.focustech.book.po.Book@1f33ecb]
应该怎么改,才能展示出数据库的表呢
之前开的那个问题不小心点错,追问变采纳了,所以重开一个,求解答,谢谢
展开
 我来答
借酒寻欢
2015-04-13 · 超过26用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:45.8万
展开全部
楼上的回答比较细致了,不过对于楼主可能稍微难理解一点。
浏览器返回了你的页面,aa,显示对象com.focustech.book.po.Book@1f33ecb,说明查询过程中完全没有问题,只是显示的方式不对。

原因是页面输出输出的是字符串,而你的book仍然是一个对象,这种对象不会采用toString方法输出的。
你应该做一个表格,<table><tr><td>name</td><td>author</td></tr><tr><td>${book.name}</td><td>${book.author}</td></tr></table>
针对book对象的每一个属性,都应该最终做到输出一个string类型或者其他简单类型。
追问
是说我应该在aa这个html中建立表格获取book对象的每个属性么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
balsum
推荐于2016-03-27 · TA获得超过311个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:184万
展开全部
SQL:select * from book where book_name=#{bookName}
DAO:List<Book> selectAll(@Param("book_name")String bookName);
IService:List<Book> getBookId(String bookName);
Controller:model.addAttribute("id",iService.getBookId("数据库"));

 你定义了一个返回List<Book>的接口(方法),通过该接口可查找到名称为“数据库”的book集合。

我想你在页面上已经做了循环,所以它显示的是[com.focustech.book.po.Book@1f33ecb]。

你可以通过EL表达式{book.attributeName}来获得相关属性。

比如:

class Book{
    String name;
    
    public String getName(){
        return name;
    }
}

可以通过{book.name}来获取这个属性。

更多追问追答
追问
这些属性,我都在Book类中获取了,get、set方法已写好
追答

那就把你页面上的代码发出来我看看。我写个示例给你:

<c:forEach items="${id}" var="book">
    //${id}中的id来自于你的代码model.addAttribute("id",iService.getBookId("数据库"));
    //现在id表示一个集合,我们从中获取每一个Book
    //定义别名为book,代码为 var="book",然后再通过EL表达式输出
    ${book.name}
</c:forEach>

 

楼下说到了toString(); 如果你要深究,可以去Object类中看看toString()方法,

public String toString() {

   return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

其返回内容的形式就是你所看到的[com.focustech.book.po.Book@1f33ecb]。

这样就很容易明白你实际上只在页面上显示了这个book,而不是book的属性(比如name)。

然后在你的Book类中写上这么一段代码:

class Book{

   String name;

    

   public String getName(){

       return name;

   }

   /**这段*/

   public String toString() {

       return "书籍:" + name;

   }

   /**这段*/

}

看看你的页面中${book}是不是会打印出 书籍:XXX

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式