文章目录
- 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、测试