为啥数据库的东西不在页面显示,一直不显示,有没有可以解决的,有没有人可以给我看一下吗
这个需要远程 如需帮助可以给我发信息
要么把错误信息和界面截图发出来,要么需要远程 。如需帮助可以给我发信息
后台数据库能查询出数据吗?
数据库能查询数据吗 业务层返回的是什么呢?
不知道你这个问题是否已经解决, 如果还没有解决的话:该系统基于springboot技术,数据层为MyBatis,数据库使用mysql,MVC模式,B/S架构,具有完整的业务逻辑。
解决方案:
1.确认数据库连接正常
首先要确认数据库连接是正常的,可以通过连接数据库并查询数据查看是否能够正常连接到数据库。可以编写一个简单的测试类,进行数据库连接和查询,代码如下:
package com.example.demo;
import java.sql.*;
public class TestDB {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
//连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
//查询数据
String sql = "SELECT * FROM user";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t" + rs.getInt("age"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
//关闭连接
try{
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
如果运行测试类,能够成功输出数据库中的数据,说明数据库连接是正常的。
2.检查Mapper映射文件
如果数据库连接正常,并且能够查询到数据,那么问题可能出现在Mapper映射文件中。可以检查Mapper映射文件中SQL语句的正确性、参数和结果集的映射关系等。以下是一个Mapper映射文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findAllUsers" resultType="com.example.demo.pojo.User">
select * from user
</select>
</mapper>
这段代码定义了一个查询所有用户的SQL语句,并指定了结果集的映射类型为User类。如果Mapper映射文件中SQL语句和映射关系都正确无误,可以尝试使用MyBatis的调试功能来查看SQL语句的执行情况,以帮助排查问题。
3.检查Controller代码
如果Mapper映射文件都没有问题,那么问题可能出现在Controller代码中。可以检查Controller代码中是否正确调用了Mapper方法,并将查询到的数据传递到前端页面进行展示。以下是一个Controller的示例代码:
package com.example.demo.controller;
import com.example.demo.pojo.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findAll")
public String findAll(Model model){
List<User> userList = userService.findAllUsers();
model.addAttribute("userList", userList);
return "userList";
}
}
这段代码定义了一个UserController类,其中findAll方法调用了UserService中的findAllUsers方法,并将查询到的用户列表放入Model中。在返回的字符串中指定了视图名称为"userList",表示将查询到的用户列表展示在名为"userList"的视图中。
4.检查JSP页面
如果Controller代码也没有问题,那么问题可能出现在JSP页面中。可以检查JSP页面中是否正确地引用了Controller返回的Model数据,并展示在页面中。以下是一个JSP页面的示例代码:
<%--
Created by IntelliJ IDEA.
User: lyf
Date: 2019/1/23
Time: 16:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户列表</title>
</head>
<body>
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
这段代码展示了一个用户列表的JSP页面,并使用了JSTL标签库中的forEach标签循环展示查询到的所有用户。在forEach标签中使用EL表达式引用了Controller返回的Model数据,即"userList"。
如果经过以上步骤,问题仍然没有解决,可以考虑使用调试工具或者抓包工具来进一步排查问题。不过在使用调试工具或者抓包工具之前,建议先回到上一步,仔细检查代码,以防止出现小错误。