java web想在网页展示数据库,但是显现的是一个对象
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]
应该怎么改,才能展示出数据库的表呢
之前开的那个问题不小心点错,追问变采纳了,所以重开一个,求解答,谢谢 展开
浏览器返回了你的页面,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对象的每个属性么
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