通用分页(增删改查)

自定义mvc
1、实体类:

public class Solr implements Serializable{
	
	private static final long serialVersionUID = 1657611036410722767L;
	private String id;
	private String job;
	private String company;
	private String address;
	private String salary;
	private String url;
	private String limit;
	private String time;
	private String desc;
	private String jobHandle;
	private String addressHandle;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getCompany() {
		return company;
	}
	public void setCompany(String company) {
		this.company = company;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getSalary() {
		return salary;
	}
	public void setSalary(String salary) {
		this.salary = salary;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getLimit() {
		return limit;
	}
	public void setLimit(String limit) {
		this.limit = limit;
	}
	public String getTime() {
		return time;
	}
	public void setTime(String time) {
		this.time = time;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	public String getJobHandle() {
		return jobHandle;
	}
	public void setJobHandle(String jobHandle) {
		this.jobHandle = jobHandle;
	}
	public String getAddressHandle() {
		return addressHandle;
	}
	public void setAddressHandle(String addressHandle) {
		this.addressHandle = addressHandle;
	}
	
	
	public Solr() {
	}
	public Solr(String id, String job, String company, String address, String salary, String url, String limit,
			String time, String desc, String jobHandle, String addressHandle) {
		this.id = id;
		this.job = job;
		this.company = company;
		this.address = address;
		this.salary = salary;
		this.url = url;
		this.limit = limit;
		this.time = time;
		this.desc = desc;
		this.jobHandle = jobHandle;
		this.addressHandle = addressHandle;
	}
	@Override
	public String toString() {
		return "Job [id=" + id + ", job=" + job + ", company=" + company + ", address=" + address + ", salary=" + salary
				+ ", url=" + url + ", limit=" + limit + ", time=" + time + ", desc=" + desc + ", jobHandle=" + jobHandle
				+ ", addressHandle=" + addressHandle + "]";
	}
	
}

2、dao(BaseDao):

public class BaseDao<T> {
	public List<T> executeQuery(String sql, Class clz, PageBean pageBean) throws SQLException, InstantiationException, IllegalAccessException{
		List<T> list = new ArrayList<>();
		Connection con = DBAccess.getConnection();
		PreparedStatement pst = null;
		ResultSet rs = null;
		if(pageBean != null && pageBean.isPagination()) {
//			查询出符合条件的总记录数
			String countSql = getCountSql(sql);
			pst = con.prepareStatement(countSql);
			rs = pst.executeQuery();
			if(rs.next()) {
				pageBean.setTotal(rs.getObject(1).toString());
			}
//			展示想要看到的数据
			String pageSql = getPageSql(sql,pageBean);
			pst = con.prepareStatement(pageSql);
			rs = pst.executeQuery();
		}else {
			pst = con.prepareStatement(sql);
			rs = pst.executeQuery();
		}
		
		while(rs.next()) {
//			list.add(new Book(rs.getInt("bid"), rs.getString("bname"), rs.getFloat("price")));
			/*
			 * 实例化了一个对象
			 * 给这一个空对象的每一个属性赋值
			 * 将赋值完的对象添加到list集合中返回
			 */
			T t = (T) clz.newInstance();
			for (Field f : clz.getDeclaredFields()) {
				f.setAccessible(true);
				f.set(t, rs.getObject(f.getName()));
				System.out.println(rs.getObject(f.getName()));
			}
			list.add(t);
		}
		DBAccess.close(con, pst, rs);
		return list;
	}

	private String getPageSql(String sql, PageBean pageBean) {
		return sql + " limit "+pageBean.getStartIndex()+","+pageBean.getRows();
	}

	private String getCountSql(String sql) {
		return "select count(*) from ("+sql+") t";
	}
	
	
	/**
	 * 
	 * @param sql
	 * @param t		
	 * @param attrs	
	 * @return
	 * @throws SQLException
	 * @throws SecurityException 
	 * @throws NoSuchFieldException 
	 * @throws IllegalAccessException 
	 * @throws IllegalArgumentException 
	 */
	public int executeUpdate(String sql, T t, String[] attrs) throws SQLException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
		Connection con = DBAccess.getConnection();
		PreparedStatement ps = con.prepareStatement(sql);
		int loop = 1;
		Field f = null;
		for (String attr : attrs) {
			f = t.getClass().getDeclaredField(attr);
			f.setAccessible(true);
			ps.setObject(loop++, f.get(t));
		}
		int code = ps.executeUpdate();
		DBAccess.close(con, ps, null);
		return code;
		
	}
}

继承BaseDao:

public class SolrDao extends BaseDao<Solr>{
	
	public List<Solr> list(Solr solr,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
		String sql="select * from t_solr_job where 1=1";
		String job = solr.getJob();
		System.out.println(job);
		if(StringUtils.isNotBlank(job)) {
			sql += " and job like '%"+job+"%'";
		}
		String id=solr.getId();
		if(id!=null) {
			sql+=" and id ='"+id+"'";
		}
		return super.executeQuery(sql, Solr.class, pageBean);
	}
	
	public int add(Solr solr) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
		String sql = "insert into t_solr_job values(?,?,?,?,?,?,?,?,?,?,?)";
		return super.executeUpdate(sql, solr,new String[]{"id","job","company","address","salary","url","limit","time","desc","jobHandle","addressHandle"});
	}
	
	public int edit(Solr solr) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
		String sql = "update t_solr_job set job=?,company=?,address=?,salary=?,url=?,limit=?,time=?,desc=?,jobHandle=?,addressHandle=? where id=?";
		return super.executeUpdate(sql, solr,new String[]{"job","company","address","salary","url","limit","time","desc","jobHandle","addressHandle","id"});
	}
	
	public int del(Solr solr) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
		String sql = "delete from t_solr_job where id=?";
		return super.executeUpdate(sql, solr,new String[]{"id"});
	}
	
	
}

工具类(继承ActionSupport类,实现ModelDriven接口):

public class SolrServlet extends ActionSupport implements ModelDriven<Solr>{
	
	private SolrDao solrDao = new SolrDao();
	private Solr solr = new Solr();
	
	@Override
	public Solr getModel() {
		// TODO Auto-generated method stub
		return solr;
	}
	
	/**
	 *  查询
	 * @param req
	 * @param resp
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String list(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		solr.setJob(req.getParameter("job"));
		PageBean pageBean = new PageBean();
		pageBean.setRequest(req);
		try {
			List<Solr> list = this.solrDao.list(solr, pageBean);
			req.setAttribute("solrList", list);
			req.setAttribute("pageBean", pageBean);
		} catch (InstantiationException | IllegalAccessException | SQLException e) {
			e.printStackTrace(); 
		}
		return "list";
	}
	
	/**
	 * 删除
	 * @param req
	 * @param resp
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	private String del(HttpServletRequest req,HttpServletResponse resp) {
		try {
			this.solrDao.del(solr);
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return "toList";
	}
	
	
	/**
	 * 修改
	 * @param req
	 * @param resp
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	private String edit(HttpServletRequest req,HttpServletResponse resp) {
		try {
			this.solrDao.edit(solr);
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "toList";
	}
	
	/**
	 * 跳转到修改界面
	 * @param req
	 * @param resp
	 * @return
	 */
	private String toEdit(HttpServletRequest req,HttpServletResponse resp) {
			try {
				Solr s = this.solrDao.list(solr, null).get(0);
				req.setAttribute("s", s);
			} catch (InstantiationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		
		return "toEdit";
	}
	
	/**
	 *增加
	 * @param req
	 * @param resp
	 * @return
	 */
	private String add(HttpServletRequest req,HttpServletResponse resp) {
		try {
			this.solrDao.add(solr);
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return "toList";
	}
	
	
}

运行结果:

主界面:
在这里插入图片描述
查询:
在这里插入图片描述
修改:
在这里插入图片描述
删除:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值