文章目录
修改dao层的数据库,加上一个删除的方法
dao层的完整代码如下,其中对比上一个博客的学习,在这个类中加了一个删除的方法
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import model.PageBean;
import model.User;
import util.StringUtil;
/**
* 用戶Dao类
* @author 我是一个点
*
*/
public class UserDao {
public User login(Connection con,User user) throws Exception{
User resultUser=null;
String sql="select * from t_user where userName=? and password=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
ResultSet rs=pstmt.executeQuery();
if(rs.next()){//查到之后对它进行实例化,
resultUser=new User();
resultUser.setId(rs.getInt("id"));
resultUser.setUserName(rs.getString("userName"));
resultUser.setPassword(rs.getString("password"));
}
return resultUser;
}
//主要用户页面初始化的时候获得所有的数据
public ResultSet userList(Connection con,PageBean pageBean,User user)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_user");
if(user!=null&&StringUtil.isNotEmpty(user.getUserName())){
sb.append(" and userName like '%"+
user.getUserName()+"%'");
}
//这里是分页的条件
if(pageBean!=null){
sb.append(" limit "+pageBean.getStart()+","+pageBean.getRows());
}
PreparedStatement pstmt=con.prepareStatement(sb.toString().replace("and","where"));
return pstmt.executeQuery();
}
//获得数据库中t_buyerUser这个表中的数据的个数
public int userCount(Connection con,User user)throws Exception{
//下面的sql这句话的意义就是一条获取数据库中的数据总数的sql语句
StringBuffer sb=new StringBuffer("select count(*) as total from t_user");
if(StringUtil.isNotEmpty(user.getUserName())){
//数据库中的模糊查找:1>通过_限制,2>通过%限制
sb.append(" and userName like '%"+
user.getUserName()+"%'");
}
PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
ResultSet rs=pstmt.executeQuery();
//如果有记录存在的话,返回存在的记录的数量
if(rs.next()){
return rs.getInt("total");
}else{
return 0;
}
}
/**
* 删除方法的实现
* @param con
* @param delIds
* @return
* @throws Exception
*/
public int userDelete(Connection con,String delIds) throws Exception{
//数据库中的SQL语句,这句话的意思是删除数据库中一个表中的某个id的数据
//对于这个表,我们的主键是id
String sql="delete from t_user where id in("+delIds+")";
PreparedStatement pstmt=con.prepareStatement(sql);
//返回受影响的结果集的个数,删了几条就返回几条
return pstmt.executeUpdate();
}
}
简单的说一下上面删除部分的代码,我们的delIds格式是1,2,3,4这样的,所以会删除1,2,3,4这四条数据,这是数据库删除部分的SQL语句的一种写法
前台代码的编写
body 中的代码变动
<div id="tb">
<div>
<a href="#" class="easyui-linkbutton" iconCls="icon-add" plain="true">添加</a>
<a href="#" class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a>
<a href="javascript:deleteManager()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">删除</a>
</div>
<div>
管理员姓名:<input type="text" name="s_userName" id="s_userName"/>
<a href="javascript:searchManager()" class="easyui-linkbutton" iconCls="icon-search" plain="true"> 查找</a>
</div>
</div>
实现body中为删除加的一个函数
//实现删除的方法
function deleteManager() {
//获取选中行的一个集合
var seletedRows=$("#dg").datagrid('getSelections');
if(seletedRows.length==0){
//这个是easyUI自带的提醒框
$.messager.alert("系统提示","请选择要删除的数据!");
return;
}
var strIds=[];//定义一个数组,获取所选内容的id
for(var i=0;i<seletedRows.length;i++){
strIds.push(seletedRows[i].id);//指明是第几个对象,并取出这个对象中的id属性,塞给这个数组
}
//将数组拼接成一个字符串,这个字符串中每个元素是以逗号分隔的
var ids=strIds.join(",");
alert(ids);
}
先写个弹框看看效果
ajax向后台传数据,并进项行简单的逻辑处理
//实现删除的方法
function deleteManager() {
//获取选中行的一个集合
var seletedRows=$("#dg").datagrid('getSelections');
if(seletedRows.length==0){
//这个是easyUI自带的提醒框
$.messager.alert("系统提示","请选择要删除的数据!");
return;
}
var strIds=[];//定义一个数组,获取所选内容的id
for(var i=0;i<seletedRows.length;i++){
strIds.push(seletedRows[i].id);//指明是第几个对象,并取出这个对象中的id属性,塞给这个数组
}
//将数组拼接成一个字符串,这个字符串中每个元素是以逗号分隔的
var ids=strIds.join(",");
$.messager.confirm("系统提示","您确定要删除这<font color=red>"
+selectedRows.length+"</font>条数据吗?",function(r){
if(r){
//上面的r是true或false,如果用户点确认,就是true
//下面的是ajax的一个异步提交,提交的url是managerDelete,post方法,json的数据格式
//提交的数据是ids这个串,后台以delIds这个属性名来获取,传回的是result,它有两个属性,这是后台自己写的
$.post("managerDelete",{delIds:ids},function(result){
if(result.success){
$.messager.alert("系统提示","您已成功删除<font color=red>"+result.delNums+"</font>条数据!");
//这句话的作用是刷新
$("#dg").datagrid("reload");
}else{
$.messager.alert('系统提示','<font color=red>'+result.errorMsg+'</font>');
}
},"json");
}
});
}
搭建后台的Servlet
配置web.xml文件
<servlet>
<description></description>
<servlet-name>managerDeleteServlet</servlet-name>
<servlet-class>web.ManagerDeleteServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>managerDeleteServlet</servlet-name>
<url-pattern>/managerDelete</url-pattern>
</servlet-mapping>
ManagerDeleteServlet.java的编写,实现删除的逻辑层
package web;
import java.io.IOException;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.UserDao;
import net.sf.json.JSONObject;
import util.DbUtil;
import util.ResponseUtil;
public class ManagerDeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil();
UserDao userDao=new UserDao();
public ManagerDeleteServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String delIds=request.getParameter("delIds");
System.out.println(delIds);
Connection con=null;
try{
con=dbUtil.getCon();
JSONObject result=new JSONObject();
//直接传过去就行了,传的是一个字符串
int delNums=userDao.userDelete(con, delIds);
if(delNums>0){
result.put("success", "true");
result.put("delNums", delNums);
}else{
result.put("errorMsg", "删除失败");
}
ResponseUtil.write(response, result);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
现在已经圆满的完成删除的任务了,nice