文章目录

  • javaweb实战超市订单管理系统(SMBMS)(五)
  • 九、增删改查
  • 增加
  • 1、导入前端添加用户页面
  • 2、Dao数据访问层
  • 3、Service业务逻辑层
  • 4、servlet控制层
  • 5、Ajax得到用户角色下拉框对象
  • 6、Ajax验证用户编码是否可用
  • 7、测试
  • 删除
  • 1、Dao数据访问层
  • 2、Service业务逻辑层
  • 3、Servlet控制层
  • 查询
  • 1、写入前端页面
  • 2、Dao数据访问层
  • 3、Service业务逻辑层
  • 4、Servlet控制层
  • 5、测试
  • 修改
  • 1、写入前端页面
  • 2、Dao数据访问层
  • 3、Service业务逻辑层
  • 4、Servlet控制层
  • 5、测试


javaweb实战超市订单管理系统(SMBMS)(五)

九、增删改查

增加

1、导入前端添加用户页面
<a href="${pageContext.request.contextPath}/jsp/useradd.jsp" >添加用户</a>
2、Dao数据访问层
//添加用户
    @Override
    public int addUser(Connection con, smbms_user user) {
        PreparedStatement pst =  null;
        int updateRows = 0;
        if(con!=null){
            String sql = "insert into `smbms_user` (userCode,userName,userPassword,gender,birthday,phone,address,userRole,creationDate,createdBy)" +
                    "values(?,?,?,?,?,?,?,?,?,?)";

            //列表对象的顺序与sql语句的顺序一致
            Object[] params ={user.getUserCode(),user.getUserName(),user.getUserPassword(),user.getGender(),
                    user.getBirthday(),user.getPhone(),user.getAddress(),user.getUserRole(),user.getCreationDate(),user.getCreatedBy()};
            System.out.println("UserDaoImpl->addUser:"+sql.toString());
            try {
                updateRows = JdbcUtil.execute(con, pst, sql, params);
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JdbcUtil.release(null,pst,null);
            }
        }
        return updateRows;
    }
3、Service业务逻辑层
//添加用户
    @Override
    public boolean addUser(smbms_user user) {
        Connection con = null;
        boolean flag = false;

        try {
            con = JdbcUtil.getConnection();
            con.setAutoCommit(false);//开启jdbc事务
            int updateRows = userDao.addUser(con,user);
            con.commit();//事务提交
            if(updateRows>0){
                flag=true;
                System.out.println("提交成功");
            }else{
                System.out.println("提交失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                con.rollback();
                System.out.println("事务回滚......");
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }finally {
            JdbcUtil.release(con,null,null);
        }
        return flag;
    }
4、servlet控制层
if(method.equals("add")&&method!=null){
            this.userAdd(req,resp);
    
	//添加用户
    private void userAdd(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        //从前端获取数据
        String userCode = req.getParameter("userCode");
        String userName = req.getParameter("userName");
        String userPassword = req.getParameter("userPassword");
        String gender = req.getParameter("gender");
        String birthday = req.getParameter("birthday");
        String phone = req.getParameter("phone");
        String address = req.getParameter("address");
        String userRole = req.getParameter("userRole");

        //将前端拿到的值存入user
        smbms_user user = new smbms_user();
        user.setUserCode(userCode);
        user.setUserName(userName);
        user.setUserPassword(userPassword);
        user.setGender(Integer.valueOf(gender));
        try {
            user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        user.setPhone(phone);
        user.setAddress(address);
        user.setUserRole(Integer.valueOf(userRole));
        user.setCreationDate(new java.util.Date());
        user.setCreatedBy(((smbms_user)req.getSession().getAttribute(Constants.User_Session)).getId());

        //调用业务层
        UserServiceImpl userService = new UserServiceImpl();
        if(userService.addUser(user)){
            resp.sendRedirect(req.getContextPath()+"/jsp/user.do?method=query");
        }
        else {
            req.getRequestDispatcher("useradd.jsp").forward(req,resp);
        }
    }
5、Ajax得到用户角色下拉框对象
//ajax得到角色列表
    public void getRoleList(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        List<smbms_role> roleList = null;
        RoleServiceImpl roleService = new RoleServiceImpl();
        roleList=roleService.getRoleList();
        //把roleList转换成json对象输出
        resp.setContentType("application/json");
        PrintWriter writer = resp.getWriter();
        writer.write(JSONArray.toJSONString(roleList));
        writer.flush();
        writer.close();
    }
6、Ajax验证用户编码是否可用
  • 在Service层中写一个根据用户编码判断用户是否存在的函数
@Override
    public smbms_user selectUserCodeExist(String userCode) {
        Connection con =null;
        smbms_user user =null;

        con=JdbcUtil.getConnection();
        user = userDao.getloginUser(con, userCode);
        JdbcUtil.release(con,null,null);

        return user;
    }
  • 在Servlet层中调用service层判断用户是否存在
//ajax验证用户编码是否可用
    public void userCodeExist(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //拿到session中用户信息
        Object o = req.getSession().getAttribute(Constants.User_Session);
        //从前端拿到输入的userCode
        String userCode = req.getParameter("userCode");
        HashMap<String, String> hashMap = new HashMap<>();
        if (StringUtils.isNullOrEmpty(userCode)) {
            hashMap.put("userCode", "exist");
        } else {
            UserServiceImpl userService = new UserServiceImpl();
            smbms_user user = userService.selectUserCodeExist(userCode);//得到用户是否存在
            if (user!=null) {
                hashMap.put("userCode", "exist");
            } else {
                hashMap.put("userCode", "NoExist");
            }
        }


        //将列表转化为json格式
        resp.setContentType("application/json");
        PrintWriter writer = resp.getWriter();
        writer.write(JSONArray.toJSONString(hashMap));
        writer.flush();
        writer.close();
    }
7、测试

删除

1、Dao数据访问层
//删除用户
    @Override
    public int delUserById(Connection con, int id) {
        PreparedStatement pst = null;
        Object[] params = {id};
        int updateRows = 0;

        String sql = "delete from smbms_user where id = ?";
        try {
            updateRows= JdbcUtil.execute(con, pst, sql, params);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtil.release(null,pst,null);
        }
        return updateRows;
    }
2、Service业务逻辑层
//删除用户
    @Override
    public boolean DelUserById(int id) {
        Connection con =null;
        boolean flag = false;
        try {
            con=JdbcUtil.getConnection();
            con.setAutoCommit(false);//设置开启事务
            int i = userDao.delUserById(con, id);
            con.commit();//提交事务
            if(i>0){
                flag=true;
                System.out.println("事务提交成功");
            }else {
                System.out.println("事务提交失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                con.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }finally {
                JdbcUtil.release(con,null,null);
            }
        }
        return flag;
    }
3、Servlet控制层
if(method!=null&&method.equals("deluser")){
            this.delUser(req,resp);
    }
	//删除用户
    public void delUser(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //从前端获取数据
        String userId = req.getParameter("uid");

        //调用业务层删除用户
        UserServiceImpl userService = new UserServiceImpl();
        Integer delId = Integer.parseInt(userId);
        boolean delResult = userService.DelUserById(Integer.parseInt(userId));

        //ajax删除用户
        HashMap<String, String> hashMap = new HashMap<>();
        if(delId<=0){
            hashMap.put("delResult","notexist");
        }else{
            if(delResult){
                hashMap.put("delResult","true");
            }else {
                hashMap.put("delResult","false");
            }
        }

        //把列表转换成json格式输出
        resp.setContentType("application/json");
        PrintWriter writer = resp.getWriter();
        writer.write(JSONArray.toJSONString(hashMap));
        writer.flush();
        writer.close();
    }

查询

1、写入前端页面
2、Dao数据访问层
//根据id得到用户
    @Override
    public smbms_user getUserById(Connection con, String id) {
        PreparedStatement pst = null;
        ResultSet rs = null;
        smbms_user user = null;
        if(con!=null){
            try {
                String sql = "select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.id =? and u.userRole=r.id";
                Object[] params = {id};
                rs = JdbcUtil.execute(con, pst, rs, sql, params);
                if(rs.next()){
                    user = new smbms_user();
                    user.setId(rs.getInt("id"));
                    user.setUserRole(rs.getInt("userRole"));
                    user.setUserName(rs.getString("userName"));
                    user.setUserCode(rs.getString("userCode"));
                    user.setPhone(rs.getString("phone"));
                    user.setBirthday(rs.getDate("birthday"));
                    user.setAddress(rs.getString("address"));
                    user.setGender(rs.getInt("gender"));
                    user.setUserRoleName(rs.getString("userRoleName"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JdbcUtil.release(null, pst,rs);
            }

        }
       return user;
    }
3、Service业务逻辑层
//通过id获得用户
    @Override
    public smbms_user getUserById(String id) {
        Connection con = null;

        con=JdbcUtil.getConnection();
        smbms_user user = userDao.getUserById(con,id);
        JdbcUtil.release(con,null,null);
        return user;
    }
4、Servlet控制层
if(method!=null&&method.equals("view")){
            this.getUserById(req,resp,"userview.jsp");
//通过id获得用户
    public void getUserById(HttpServletRequest req, HttpServletResponse resp,String url) throws ServletException, IOException {
        String id = req.getParameter("uid");

        if(!StringUtils.isNullOrEmpty(id)){
            //调用业务层方法获得user对象
            UserServiceImpl userService = new UserServiceImpl();
            smbms_user user = userService.getUserById(id);
            req.setAttribute("user",user);
            req.getRequestDispatcher(url).forward(req,resp);
        }
    }
5、测试

修改

1、写入前端页面
2、Dao数据访问层
//修改用户
    @Override
    public int modifyUser(Connection con, smbms_user user) {
        PreparedStatement pst = null;
        int execute  = 0;

        if(con!=null){
            String sql = "update smbms_user set userName=?,"+
                    "gender=?,birthday=?,phone=?,address=?,userRole=?,modifyBy=?,modifyDate=? where id = ? ";
            Object[] params = {user.getUserName(),user.getGender(),user.getBirthday(),
                    user.getPhone(),user.getAddress(),user.getUserRole(),user.getModifyBy(),
                    user.getModifyDate(),user.getId()};

            try {
                execute = JdbcUtil.execute(con, pst, sql, params);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            JdbcUtil.release(null,pst,null);
        }
        return execute;
    }
3、Service业务逻辑层
//修改用户
    @Override
    public boolean modifyUser(smbms_user user) {
        Connection con = null;
        boolean flag =false;

        try {
            con=JdbcUtil.getConnection();
            con.setAutoCommit(false);//开启事务

            int i = userDao.modifyUser(con, user);
            con.commit();//提交事务
            if(i>0){
                flag=true;
                System.out.println("事务提交成功");
            }else {
                System.out.println("事务提交失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                con.rollback();//事务回滚
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }finally {
            JdbcUtil.release(con,null,null);
        }
        return flag;
    }
4、Servlet控制层
if(method!=null&&method.equals("modifyexe")){
            this.modifyUser(req,resp);
}else if(method!=null&&method.equals("modify")) {
            this.getUserById(req, resp, "usermodify.jsp");
        }

 	//修改用户
    public void modifyUser(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        //从前端拿到数据
        String uid = req.getParameter("uid");
        String gender = req.getParameter("gender");
        String userName = req.getParameter("userName");
        String birthday = req.getParameter("birthday");
        String phone = req.getParameter("phone");
        String address = req.getParameter("address");
        String userRole = req.getParameter("userRole");

        //将前端拿到的值存入user
        smbms_user user = new smbms_user();
        user.setGender(Integer.valueOf(gender));
        user.setUserName(userName);
        try {
            user.setBirthday(new SimpleDateFormat("yyyy-mm-dd").parse(birthday));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        user.setPhone(phone);
        user.setUserRole(Integer.valueOf(userRole));
        user.setAddress(address);
        user.setId(Integer.valueOf(uid));
        user.setModifyBy(((smbms_user)req.getSession().getAttribute(Constants.User_Session)).getId());
        user.setCreationDate(new Date());


        //调用业务层
        UserServiceImpl userService = new UserServiceImpl();
        boolean b = userService.modifyUser(user);
        if (b) {
            resp.sendRedirect(req.getContextPath()+"/jsp/user.do?method=query");
        }else {
            req.getRequestDispatcher("usermodify.jsp").forward(req,resp);
        }
    }
5、测试