首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring MVC Hibernate应用加载数据库表

Spring MVC Hibernate应用加载数据库表
EN

Stack Overflow用户
提问于 2016-08-07 23:39:10
回答 2查看 94关注 0票数 0

我用SpringMVC和Hibernate创建了一个简单的web应用程序。一切正常,我的员工被添加到数据库(使用MySQL),但页面没有显示他们的列表:

此外,当我添加对象时,记录器不会显示任何输出消息,而它应该显示如下内容:"Employee add successfully,Employee details:...“

页面如下:

代码语言:javascript
复制
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
<head>
    <title>Employee Page</title>
    <style type="text/css">
        .tg  {border-collapse:collapse;border-spacing:0;border-color:#ccc;}
        .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;}
        .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}
        .tg .tg-4eph{background-color:#f9f9f9}
    </style>
</head>
<body>
<h1>
    Add a Employee
</h1>

<c:url var="addAction" value="/employee/add" ></c:url>

<form:form action="${addAction}" commandName="employee">
    <table>
        <c:if test="${!empty employee.name}">
            <tr>
                <td>
                    <form:label path="id">
                        <spring:message text="ID"/>
                    </form:label>
                </td>
                <td>
                    <form:input path="id" readonly="true" size="8"  disabled="true" />
                    <form:hidden path="id" />
                </td>
            </tr>
        </c:if>
        <tr>
            <td>
                <form:label path="name">
                    <spring:message text="Name"/>
                </form:label>
            </td>
            <td>
                <form:input path="name" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <c:if test="${!empty employee.name}">
                    <input type="submit"
                           value="<spring:message text="Edit Employee"/>" />
                </c:if>
                <c:if test="${empty employee.name}">
                    <input type="submit"
                           value="<spring:message text="Add Employee"/>" />
                </c:if>
            </td>
        </tr>
    </table>
</form:form>
<br>
<h3>List of Employees</h3>
<c:if test="${!empty listEmployees}">
    <table class="tg">
        <tr>
            <th width="80">Employee ID</th>
            <th width="120">Employee Name</th>
            <th width="60">Edit</th>
            <th width="60">Delete</th>
        </tr>
        <c:forEach items="${listEmployee}" var="employee">
            <tr>
                <td>${employee.id}</td>
                <td>${employee.name}</td>
                <td><a href="<c:url value='/edit/${employee.id}' />" >Edit</a></td>
                <td><a href="<c:url value='/remove/${employee.id}' />" >Delete</a></td>
            </tr>
        </c:forEach>
    </table>
</c:if>
</body>
</html>

@Qualifier(value = "employeeDAO")
public class EmployeeDAOImpl implements EmployeeDAO {

    private static final Logger logger = LoggerFactory.getLogger(EmployeeDAOImpl.class);

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sf){
        this.sessionFactory = sf;
    }
    @Override
    public void addEmployee(Employee e) {
        Session session = this.sessionFactory.getCurrentSession();
        session.persist(e);
        logger.info("Employee saved successfully, Employee details: " + e);
    }

    @Override
    public void updateEmployee(Employee e) {
        Session session = this.sessionFactory.getCurrentSession();
        session.update(e);
        logger.info("Employee updated successfully, Employee details: " + e);
    }

    @SuppressWarnings("uncheked")
    @Override
    public List<Employee> listEmployee() {
        Session session = this.sessionFactory.getCurrentSession();
        List<Employee> employeeList = session.createQuery("FROM Employee").list();
        for (Employee e: employeeList){
            logger.info("Employee List::" + e);
        }
        return employeeList;

    }

    @Override
    public Employee getEmployeeById(int id) {
        Session session = this.sessionFactory.getCurrentSession();
        Employee e = (Employee) session.load(Employee.class, new Integer(id));
        logger.info("Employee loaded successfully, Employee details: " + e);
        return null;
    }

    @Override
    public void removeEmployee(int id) {
        Session session = this.sessionFactory.getCurrentSession();
        Employee e = (Employee) session.load(Employee.class, new Integer(id));
        if(e != null){
            session.delete(e);
        }
        logger.info("Employee delete successfully, Employee details: " + e);
    }
}

我的服务类:

代码语言:javascript
复制
@Service
@Qualifier(value = "employeeService")
public class EmployeeServiceImpl implements EmployeeService{



    public EmployeeServiceImpl() {
    }

    private EmployeeDAO employeeDAO;

    public EmployeeServiceImpl(EmployeeDAO employeeDAO) {
        this.employeeDAO = employeeDAO;
    }

    @Override
    @Transactional
    public void addEmployee(Employee e) {
        this.employeeDAO.addEmployee(e);
    }

    @Override
    @Transactional
    public void updateEmployee(Employee e) {
        this.employeeDAO.updateEmployee(e);
    }

    @Override
    @Transactional
    public List<Employee> listEmployee() {
        return this.employeeDAO.listEmployee();
    }

    @Override
    @Transactional
    public Employee getEmployeeById(int id) {
        return this.employeeDAO.getEmployeeById(id);
    }

    @Override
    @Transactional
    public void removeEmployee(int id) {
        this.employeeDAO.removeEmployee(id);
    }

    public void setEmployeeDAO(EmployeeDAOImpl employeeDAO) {
        this.employeeDAO = employeeDAO;
    }
}

我在这里创建映射:

代码语言:javascript
复制
@Entity
@Table(name = "Employee")
public class Employee {
    @Column(name = "Name")
    private String name;

    @Id
    @Column(name = "Employee ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int employeeID;

    public Employee(String name) {
        this.name = name;
    }

    public Employee() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getEmployeeID() {
        return employeeID;
    }

    public void setEmployeeID(int employeeID) {
        this.employeeID = employeeID;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", employeeID=" + employeeID +
                '}';
    }
}

控制器类:

代码语言:javascript
复制
@Controller
public class EmployeeController {

    private EmployeeService employeeService;

    @Autowired(required = true)
    @Qualifier("employeeService")
    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    @RequestMapping(value = "/employee", method = RequestMethod.GET)
    public String employeeList(Model model) {
        model.addAttribute("employee", new Employee());
        model.addAttribute("listEmployee", this.employeeService.listEmployee());
        return "employee";
    }

    //For add and update person both
    @RequestMapping(value = "/employee/add", method = RequestMethod.GET)
    public String addEmployee(@ModelAttribute("person") Employee e){

        if (e.getEmployeeID() == 0){
            //new employee, add it
            this.employeeService.addEmployee(e);
        }else {
            //existing employee, call update
            this.employeeService.updateEmployee(e);
        }
        return "redirect:/employee";
    }

    @RequestMapping(value = "employees/remove/{id}")
    public String removeEmployee(@PathVariable("id") int id){

        this.employeeService.removeEmployee(id);
        return "redirect:/employees";
    }

    @RequestMapping(value = "/employees/edit{id}")
    public String editEmployee(@PathVariable("id") int id, Model model){

        model.addAttribute("employee", this.employeeService.getEmployeeById(id));
        model.addAttribute("listEmployees", this.employeeService.listEmployee());
        return "employee";
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-08 14:46:56

在JSP Page中您的检查条件listEmployees,但在控制器中,您添加了作为模型属性listEmployee。从listEmployees中删除最后一个字符%s。应该能行得通。除此之外,一切都很好。

代码语言:javascript
复制
 <c:if test="${!empty listEmployees}">

在控制器中

代码语言:javascript
复制
model.addAttribute("listEmployee", this.employeeService.listEmployee());
票数 0
EN

Stack Overflow用户

发布于 2016-08-08 14:57:18

变化

代码语言:javascript
复制
<c:forEach items="${listEmployee}" var="employee"> 

代码语言:javascript
复制
<c:forEach items="${listEmployees}" var="employee">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38815763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档