用thymeleaf和JDBC更新数据库

时间:2017-11-06 18:50:01

标签: java jdbc thymeleaf

我的代码问题在于我可以插入新播放器的位置,但由于某种原因我无法更新它们。这是我的Controller和类的代码,我保留了所有方法。我只是想编辑露营者,但我不确定为什么它根本没有在数据库中更新它们。如果需要,我可以发布更多代码,只是不确定需要什么。

控制器:

package info.hccis.camper.web;

import info.hccis.camper.bo.CamperValidationBO;
import info.hccis.camper.dao.CamperDAO;
import info.hccis.camper.model.jpa.Camper;
import info.hccis.camper.model.jpa.User;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class CamperController {

@RequestMapping("/camper/add")
public String add(Model model, HttpSession session) {

    //make sure logged in
    User user = (User) session.getAttribute("loggedInUser");
    if (user == null) {
        model.addAttribute("user", new User());
        return "other/welcome";
    }

    Camper camper = new Camper();
    model.addAttribute("camper", camper);

    return "camper/add";
}

@RequestMapping("/camper/delete")
public String delete(Model model, HttpSession session, HttpServletRequest request) {

    //make sure logged in
    User user = (User) session.getAttribute("loggedInUser");
    if (user == null) {
        model.addAttribute("user", new User());
        return "other/welcome";
    }

    String id = request.getParameter("id");
    CamperDAO.delete(Integer.parseInt(id));

    ArrayList<Camper> campers = CamperDAO.selectAll();
    model.addAttribute("campers", campers);
    return "camper/list";
}

@RequestMapping("/camper/edit")
public String edit(Model model, HttpSession session, HttpServletRequest request){

    //make sure logged in
    User user = (User) session.getAttribute("loggedInUser");
    if (user == null) {
        model.addAttribute("user", new User());
        return "other/welcome";
    }

    String id = request.getParameter("id");
    Camper camper = CamperDAO.select(Integer.parseInt(id));

    model.addAttribute("camper", camper);

    return "camper/add";
}

@RequestMapping("/camper/addSubmit")
public String addSubmit(Model model, @ModelAttribute("camper") Camper camper, HttpSession session) {

    //make sure logged in
    User user = (User) session.getAttribute("loggedInUser");
    if (user == null) {
        model.addAttribute("user", new User());
        return "other/welcome";
    }

    ArrayList<String> errors = CamperValidationBO.validateCamper(camper);
    //If there is an error send them back to add page.

    boolean error = false;
    if (!errors.isEmpty()) {
        error = true;
    }

    if (error) {
        model.addAttribute("messages", errors);
        return "/camper/add";
    }

    System.out.println("BJM - About to add " + camper + " to the database");
    try {
        CamperDAO.update(camper);
        //Get the campers from the database
        ArrayList<Camper> campers = CamperDAO.selectAll();
        model.addAttribute("campers", campers);
    } catch (Exception ex) {
        System.out.println("BJM - There was an error adding camper to the database");
    }
    return "camper/list";
}

@RequestMapping("/camper/list")
public String showHome(Model model, HttpSession session) {

    //make sure logged in
    User user = (User) session.getAttribute("loggedInUser");
    if (user == null) {
        model.addAttribute("user", new User());
        return "other/welcome";
    }

    //Get the campers from the database
    ArrayList<Camper> campers = CamperDAO.selectAll();
    System.out.println("BJM-found " + campers.size() + " campers.  Going to welcome page");
    model.addAttribute("campers", campers);

    //This will send the user to the welcome.html page.
    return "camper/list";
}

}

其他课程:

package info.hccis.camper.dao;


import info.hccis.camper.dao.util.ConnectionUtils;
import info.hccis.camper.dao.util.DbUtils;
import info.hccis.camper.model.jpa.Camper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.logging.Logger;


public class CamperDAO {

private final static Logger LOGGER = Logger.getLogger(CamperDAO.class.getName());

public static synchronized void delete(int idIn) {

    PreparedStatement ps = null;
    String sql = null;
    Connection conn = null;
    try {
        conn = ConnectionUtils.getConnection();

        sql = "delete FROM camper where id = ? limit 1";

        ps = conn.prepareStatement(sql);
        ps.setInt(1, idIn);
        ps.executeUpdate();

    } catch (Exception e) {
        String errorMessage = e.getMessage();
        e.printStackTrace();
    } finally {
        DbUtils.close(ps, conn);
    }
}


public static Camper select(int idIn) {

    PreparedStatement ps = null;
    String sql = null;
    Connection conn = null;
    Camper theCamper = null;
    try {
        conn = ConnectionUtils.getConnection();

        sql = "SELECT * FROM camper WHERE id = ?";

        ps = conn.prepareStatement(sql);
        ps.setInt(1, idIn);
        ResultSet rs = ps.executeQuery();

        while (rs.next()) {

            long id = rs.getInt("id");
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String dob = rs.getString("dob");
            String parentName = rs.getString("parentName");
            String email = rs.getString("email");
            double totalPaid = rs.getDouble("totalPaid");
            theCamper = new Camper(id, firstName, lastName, parentName, email, totalPaid);
            theCamper.setDob(dob);

        }
    } catch (Exception e) {
        String errorMessage = e.getMessage();
        e.printStackTrace();
    } finally {
        DbUtils.close(ps, conn);
    }
    return theCamper;
}


public static ArrayList<Camper> selectAll() {

    ArrayList<Camper> campers = new ArrayList();
    PreparedStatement ps = null;
    String sql = null;
    Connection conn = null;
    try {
        conn = ConnectionUtils.getConnection();

        sql = "SELECT * FROM camper  order by id";

        ps = conn.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {

            long id = rs.getLong("id");
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String dob = rs.getString("dob");
            String parentName = rs.getString("parentName");
            String email = rs.getString("email");
            double totalPaid = rs.getDouble("totalPaid");
            Camper camper = new Camper(id, firstName, lastName, parentName, email, totalPaid);
            camper.setDob(dob);
            campers.add(camper);
        }
    } catch (Exception e) {
        String errorMessage = e.getMessage();
        e.printStackTrace();
    } finally {
        DbUtils.close(ps, conn);
    }
    return campers;
}

public static ArrayList<Camper> selectAllByDOB(String year) {

    ArrayList<Camper> campers = new ArrayList();
    PreparedStatement ps = null;
    String sql = null;
    Connection conn = null;
    try {
        conn = ConnectionUtils.getConnection();

        sql = "SELECT * FROM camper  where dob like ? order by id";

        ps = conn.prepareStatement(sql);
        ps.setString(1, year+"%");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {

            long id = rs.getLong("id");
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String dob = rs.getString("dob");
            String parentName = rs.getString("parentName");
            String email = rs.getString("email");
            double totalPaid = rs.getDouble("totalPaid");
            Camper camper = new Camper(id, firstName, lastName, parentName, email, totalPaid);
            camper.setDob(dob);
            campers.add(camper);
        }
    } catch (Exception e) {
        String errorMessage = e.getMessage();
        e.printStackTrace();
    } finally {
        DbUtils.close(ps, conn);
    }
    return campers;
}


public static synchronized Camper update(Camper camper) throws Exception {
    PreparedStatement ps = null;
    String sql = null;
    Connection conn = null;


    /*
     * Setup the sql to update or insert the row.
     */
    try {
        conn = ConnectionUtils.getConnection();

        //Check to see if camper exists.
        if (camper.getId() == null) {

            sql = "SELECT max(id) from Camper";
            ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            long max = 0;
            while (rs.next()) {
                max = rs.getInt(1) + 1;
            }

            camper.setId(max);

            sql = "INSERT INTO `Camper`(`id`, `firstName`, `lastName`, `dob`, `parentName`, `email`, `totalPaid`) "
                    + "VALUES (?,?,?,?,?,?,?)";

            ps = conn.prepareStatement(sql);
            ps.setLong(1, camper.getId());
            ps.setString(2, camper.getFirstName());
            ps.setString(3, camper.getLastName());
            ps.setString(4, camper.getDob());
            ps.setString(5, camper.getParentName());
            ps.setString(6, camper.getEmail());
            ps.setDouble(7, camper.getTotalPaid());


        } else {

            sql = "UPDATE `camper` SET `firstName`=?,`lastName`=?,`dob`=?, `parentName`=?, `email`=?, `totalPaid`=? WHERE id = ?";

            ps = conn.prepareStatement(sql);
            ps.setLong(1, camper.getId());
            ps.setString(2, camper.getFirstName());
            ps.setString(3, camper.getLastName());
            ps.setString(4, camper.getDob());
            ps.setString(5, camper.getParentName());
            ps.setString(6, camper.getEmail());
            ps.setDouble(7, camper.getTotalPaid());

        }
        /*
         Note executeUpdate() for update vs executeQuery for read only!!
         */

        ps.executeUpdate();

    } catch (Exception e) {
        String errorMessage = e.getMessage();
        e.printStackTrace();
        throw e;
    } finally {
        DbUtils.close(ps, conn);
    }
    return camper;

}

}

1 个答案:

答案 0 :(得分:0)

您的更新代码是:

src/main/resources

您有7个参数,并且thelast设置为totalPaid valuenstead of id。 你必须:

sql = "UPDATE `camper` SET `firstName`=?,`lastName`=?,`dob`=?, `parentName`=?, `email`=?, `totalPaid`=? WHERE id = ?";

        ps = conn.prepareStatement(sql);
        ps.setLong(1, camper.getId());
        ps.setString(2, camper.getFirstName());
        ps.setString(3, camper.getLastName());
        ps.setString(4, camper.getDob());
        ps.setString(5, camper.getParentName());
        ps.setString(6, camper.getEmail());
        ps.setDouble(7, camper.getTotalPaid());