Не правильно читает информацию из базы данных

163
31 января 2020, 18:50

Когда хочу вывести информацию из базы данных school_db (в нем есть таблица студенты с фио) вот хочу их вывести но почему то выводит пустоту

Он начал новый столбец с новыми именами создавать Student controller

package adil.java.schoolmaven.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import adil.java.schoolmaven.entity.Student;
import  adil.java.schoolmaven.service.StudentService;
@Controller
public class StudentController {
    // Constructor based Dependency Injection
    private StudentService studentService;
    public StudentController() {
    }
    @Autowired
    public StudentController(StudentService studentService) {
        this.studentService = studentService;
    }

    @RequestMapping(value = { "/", "/index" }, method = RequestMethod.GET)
    public ModelAndView hello(HttpServletResponse response) throws IOException {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");
        return mv;
    }
    // Get All Users
    @RequestMapping(value = "/allStudents", method = RequestMethod.POST)
    public ModelAndView displayAllUser() {
        System.out.println("User Page Requested : All Students");
        ModelAndView mv = new ModelAndView();
        List<Student> studentList = studentService.getAllStudents();
        mv.addObject("studentList", studentList);
        mv.setViewName("allStudents");
        return mv;
    }
    @RequestMapping(value = "/addStudent", method = RequestMethod.GET)
    public ModelAndView displayNewUserForm() {
        ModelAndView mv = new ModelAndView("addStudent");
        mv.addObject("headerMessage", "Add Student Details");
        mv.addObject("student", new Student());
        return mv;
    }
    @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
    public ModelAndView saveNewStudent(@ModelAttribute Student student, BindingResult result) {
        ModelAndView mv = new ModelAndView("redirect:/index");
        if (result.hasErrors()) {
            return new ModelAndView("error");
        }
        boolean isAdded = studentService.saveStudent(student);
        if (isAdded) {
            mv.addObject("message", "New student successfully added");
        } else {
            return new ModelAndView("error");
        }
        return mv;
    }
    @RequestMapping(value = "/editStudent/{id}", method = RequestMethod.GET)
    public ModelAndView displayEditUserForm(@PathVariable Long id) {
        ModelAndView mv = new ModelAndView("/editStudent");
        Student student = studentService.getStudentById(id);
        mv.addObject("headerMessage", "Edit Student Details");
        mv.addObject("student", student);
        return mv;
    }
    @RequestMapping(value = "/editStudent/{id}", method = RequestMethod.POST)
    public ModelAndView saveEditedUser(@ModelAttribute Student student, BindingResult result) {
        ModelAndView mv = new ModelAndView("redirect:/index");
        if (result.hasErrors()) {
            System.out.println(result.toString());
            return new ModelAndView("error");
        }
        boolean isSaved = studentService.saveStudent(student);
        if (!isSaved) {
            return new ModelAndView("error");
        }
        return mv;
    }
    @RequestMapping(value = "/deleteStudent/{id}", method = RequestMethod.GET)
    public ModelAndView deleteUserById(@PathVariable Long id) {
        boolean isDeleted = studentService.deleteStudentById(id);
        System.out.println("Student deletion respone: " + isDeleted);
        ModelAndView mv = new ModelAndView("redirect:/index");
        return mv;
    }
}

Student

package adil.java.schoolmaven.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="students")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", userName=" + ", firstName=" + firstName + ", lastName=" + lastName
                + "]";
    }

}

Student Repository

package adil.java.schoolmaven.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import adil.java.schoolmaven.entity.Student;
@Repository
public interface StudentRepository extends CrudRepository<Student, Long>{
}

Student Service

package adil.java.schoolmaven.service;
import java.util.List;
import adil.java.schoolmaven.entity.Student;
public interface StudentService {
    public List<Student> getAllStudents();
    public Student getStudentById(Long id);
    public boolean saveStudent(Student student);
    public boolean deleteStudentById(Long id);
}

StudentServiceImpl

package adil.java.schoolmaven.service;
import java.util.ArrayList;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import adil.java.schoolmaven.entity.Student;
import adil.java.schoolmaven.repository.StudentRepository;
@Service
@Transactional
public class StudentServiceImpl implements StudentService {

        private StudentRepository repository;
        public StudentServiceImpl() {
        }
        @Autowired
        public StudentServiceImpl(StudentRepository repository) {
            super();
            this.repository = repository;
        }
                @Override
                public List<Student> getAllStudents() {
        List<Student> list = new ArrayList<Student>();
        repository.findAll().forEach(e -> list.add(e));
        return list;
    }
    @Override
    public Student getStudentById(Long id) {
        Student student = repository.findById(id).get();
        return student;
    }
    @Override
    public boolean saveStudent(Student student) {
        try {
            repository.save(student);
            return true;
        }catch(Exception ex) {
            return false;
        }
    }
    @Override
    public boolean deleteStudentById(Long id) {
        try {
            repository.deleteById(id);
            return true;
        }catch(Exception ex) {
            return false;
        }
    }
}

Application properties

# MySQL properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/school_db_newnew?useTimezone=true&serverTimezone=GMT
jdbc.username=root
jdbc.password=123456
# Hibernate properties
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.hbm2ddl.auto=update

Add Student JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home</title>
</head>
<body>
    <h1>${headerMessage}</h1>
        <form:form method="POST" action="addStudent" modelAttribute="student">
             <table>
                <tr>
                    <td><form:label path="firstName">First Name</form:label></td>
                    <td><form:input path="firstName"/></td>
                </tr>
                <tr>
                    <td><form:label path="lastName">LastName</form:label></td>
                    <td><form:input path="lastName"/></td>
                </tr>

                <tr>
                    <td><input type="submit" value="Submit"/></td>
                </tr>
            </table>
        </form:form>
</body>
</html>

AllStudent JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Users</title>
</head>
<body>
    <br>
    <br>
    <br>
    <a href="${pageContext.request.contextPath}/addStudent">Add User</a>
    <br>
    <h3>List of all users</h3>
    ${message}
    <br>
    <br>
    <table border="1px" cellpadding="0" cellspacing="0">
        <thead>
            <tr>
                <th>First Name</th>
                <th>Last Name</th>

                <th>Edit</th>
                <th>Delete</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach var="student" items="${studentList}">
                <tr>
                    <td>${student.firstName}</td>
                    <td>${student.lastName}</td>

                    <td><a
                        href="${pageContext.request.contextPath}/editUser/${student.id}">Edit</a></td>
                    <td><a
                        href="${pageContext.request.contextPath}/deleteUser/${student.id}">Delete</a></td>
                </tr>
            </c:forEach>
        </tbody>

    </table>
</body>
</html>

Edit Student JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home</title>
</head>
<body>
    <h1>${headerMessage}</h1>
        <form:form method="POST" action="editStudent" modelAttribute="student">
            <form:hidden path="id" /> 
             <table>
                <tr>
                    <td><form:label path="firstName">First Name</form:label></td>
                    <td><form:input path="firstName"/></td>
                </tr>
                <tr>
                    <td><form:label path="lastName">LastName</form:label></td>
                    <td><form:input path="lastName"/></td>
                </tr>

                <tr>
                    <td><input type="submit" value="Submit"/></td>
                </tr>
            </table>
        </form:form>
</body>
</html>

index

<%@page contentType="text/html" pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home Page</title>
</head>
<body>
<br>
<br>
<br>
    <form action="allStudents" method="post">
        <input type="submit" value="List All Users" />
    </form>
</body>
</html>
Answer 1

Надо было просто firstName заменить на name. Из-за этого лишний новый столбец создавался. Так как название столбца в бд должно совпадать с названием в коде Спринга

@Entity
@Table(name="student")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String name;
    private String surname;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
    @Override
    public String toString() {
        return "Student [id=" + id  + ", name=" + name + ", surname=" + surname
                + "]";
    }

}
READ ALSO
Comparator и метод compare

Comparator и метод compare

Помогите понять логику выполнения программыУ нас есть 3 массива стрингов, они записаны в ArrayList, я сортирую их по количеству элементов в листе

186
Экранировать вложенные кавычки на Java

Экранировать вложенные кавычки на Java

Уже долго мучаюсь над проблемойИмеются строки примерно такого формата: registrationNumber:""074-р"" registrationNumber:"074"-р" registrationNumber:""07"4-р"" После двоеточия...

177
Ширина блока по наибольшему

Ширина блока по наибольшему

возникла проблема с выравниванием ширины блока по наибольшему в колонкеВот как это выглядит на данный момент:

185
JavaScript выдает ошибку Uncaught TypeError: Cannot read property &#39;innerHTML&#39; of undefined

JavaScript выдает ошибку Uncaught TypeError: Cannot read property 'innerHTML' of undefined

Ошибка говорит что нельзя присвоить текст к несуществующему объекту, что-то не так с получением данных

184