通用分页

9 篇文章 0 订阅

通用分页

操作步骤

  1. 在mySql中创建需要的库和表
  2. 导入需要的jar包
  3. 创建需要的包
  4. 编写各包的代码的同时在编写jsp代码

库和表

在这里插入图片描述

jar包

在这里插入图片描述

在这里插入图片描述
util放一些已经写好了的条件代码
特别是DBAccess类里面写的是连接各种各样的数据,关键性代码
列如:MySQL数据库,SqlServer数据库,oracle数据库,DBAccess类里面根本不用变动代码,但是config里面就是需要连接那个数据库
就放开那个数据库,其他的数据库连接就注释掉,其他的类就是根据要求所添加的

entity放实体类

tag放计算页码所需的代码

frameworl放一个抽象类和一个可以用map集合存储那个抽象类的类

dao放所需要实现的方法(如:增加,修改,模糊查询,删除,分页)
在dao包中要特别写一个BaseDao来实现分页的效果

public class BaseDao<E> {
	public List<E> query(String sql,PageBean pageBean,Callback<E> callback){
		List<E> ls=new ArrayList<E>();
		Connection con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		//第一次查询 查总记录数
		if(null!=pageBean&&pageBean.isPagination()) {
			try {
				con=DBAccess.getConnection();
				String countsql=this.getCountSql(sql);
				ps=con.prepareStatement(countsql);
				rs=ps.executeQuery();
				if(rs.next()) {
					pageBean.setTotal(rs.getInt(1));
				}
			} catch (SQLException e) {
				// TODO: handle exception
				throw new RuntimeException();
			}finally {
				DBAccess.close(null, ps, rs);
			}
			
		}
		//第二次查询 查询满足条件的记录数
		if(null!=pageBean&&pageBean.isPagination()) {
			sql=this.getPageSql(sql, pageBean);
		}
		try {
			con=DBAccess.getConnection();
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			return callback.foreach(rs);
		} catch (SQLException e) {
			// TODO: handle exception
			throw new RuntimeException();
		}finally {
			DBAccess.close(null, ps, rs);
		}
	}
	
	/**
	 * 把普通sql转成查总记录数sql
	 * @param sql
	 * @return
	 */
	public String getCountSql(String sql) {
		String countSql="select count(*) from ("+sql+") t";
		return countSql;
	}
	/**
	 * 查满足分页的sql
	 * @param sql
	 * @return
	 */
	public String getPageSql(String sql,PageBean pageBean) {
		String pageSql=sql+" limit "+pageBean.getStartIndex()+","+pageBean.getRows()+"";
		return pageSql;
	}
}

还有一个dao类就存放增删改查
模糊查询

关键性代码
String sql="select * from t_solr_job";
	if(sname!=null) {
	sql="select * from t_solr_job where company like '%"+sname+"%'";
}
public List<Student> getAll(String sname,PageBean pageBean){
		List<Student> list=new ArrayList<Student>();
		//模糊查询的条件
		String sql="select * from t_solr_job";
		if(sname!=null) {
			sql="select * from t_solr_job where company like '%"+sname+"%'";
		}
		return this.query(sql, pageBean, new Callback<Student>() {
			
			@Override
			public List<Student> foreach(ResultSet rs) throws SQLException {
				// TODO Auto-generated method stub
				Student stu=null;
				while(rs.next()) {
					stu=new Student();
					stu.setId(rs.getString("id"));
					stu.setJob(rs.getString("job"));
					stu.setCompany(rs.getString("company"));
					stu.setAddress(rs.getString("address"));
					stu.setSalary(rs.getString("salary"));
					stu.setUrl(rs.getString("url"));
					stu.setLimit(rs.getString("limito"));
					stu.setTime(rs.getString("time"));
					stu.setDesc(rs.getString("descc"));
					stu.setJobHandle(rs.getString("jobHandle"));
					stu.setAddressHandle(rs.getString("addressHandle"));
					list.add(stu);
				}
				return list;
			}
		});
	} 

根据id查询

public List<Student> getAllID(String id){
		List<Student> ls=new ArrayList<Student>();
		Connection	con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			con=DBAccess.getConnection();
			String sql="select * from t_solr_job where id="+id;
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			if(rs.next()) {
				Student stu=new Student();
				stu.setId(rs.getString("id"));
				stu.setJob(rs.getString("job"));
				stu.setCompany(rs.getString("company"));
				stu.setAddress(rs.getString("address"));
				stu.setSalary(rs.getString("salary"));
				stu.setUrl(rs.getString("url"));
				stu.setLimit(rs.getString("limito"));
				stu.setTime(rs.getString("time"));
				stu.setDesc(rs.getString("descc"));
				stu.setJobHandle(rs.getString("jobHandle"));
				stu.setAddressHandle(rs.getString("addressHandle"));
				ls.add(stu);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBAccess.close(con, ps, rs);
		}
		return ls;
	}

增加数据

public int Add(Student stu){
		int n=0;
		Connection	con=null;
		PreparedStatement ps=null;
		try {
			con=DBAccess.getConnection();
			String sql="insert into t_solr_job(id,job,company,address,salary,url,limito,time,descc,jobHandle,addressHandle)values(?,?,?,?,?,?,?,?,?,?,?)";
			ps=con.prepareStatement(sql);
			ps.setString(1, stu.getId());
			ps.setString(2, stu.getJob());
			ps.setString(3, stu.getCompany());
			ps.setString(4, stu.getAddress());
			ps.setString(5, stu.getSalary());
			ps.setString(6, stu.getUrl());
			ps.setString(7, stu.getLimit());
			ps.setString(8, stu.getTime());
			ps.setString(9, stu.getDesc());
			ps.setString(10, stu.getJobHandle());
			ps.setString(11, stu.getAddressHandle());
			n=ps.executeUpdate();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBAccess.close(con, ps, null);
		}
		return n;
	}
}

修改数据

public int Update(String id,Student stu){
		int n=0;
		Connection	con=null;
		PreparedStatement ps=null;
		try {
			con=DBAccess.getConnection();
			String sql="update t_solr_job set job=?,company=?,address=?,salary=?,url=?,limito=? where id="+id;
			ps=con.prepareStatement(sql);
			ps.setString(1, stu.getJob());
			ps.setString(2, stu.getCompany());
			ps.setString(3, stu.getAddress());
			ps.setString(4, stu.getSalary());
			ps.setString(5, stu.getUrl());
			ps.setString(6, stu.getLimit());
			n=ps.executeUpdate();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBAccess.close(con, ps, null);
		}
		return n;
	}

删除数据

public int Delete(String id){
		int n=0;
		Connection	con=null;
		PreparedStatement ps=null;
		try {
			con=DBAccess.getConnection();
			String sql="delete from t_solr_job where id="+id;
			ps=con.prepareStatement(sql);
			n=ps.executeUpdate();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBAccess.close(con, ps, null);
		}
		return n;
	}

action放实现dao方法里面的增删查改和分页的
先继承HttpServlet,在new一个dao类(放增删改查的类),然后来一个无参数的构造方法,doget方法,dopost方法 在dopost方法里面写获取需要的值然后调用dao类里面的方法,写完action包里面所有的类时,在web.xml中配置
在这里插入图片描述

<servlet>
    <servlet-name>actionServlet</servlet-name>
    <servlet-class>com.zking.frameworl.ActionServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>actionServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

*为通配符 表示最后action为结束的类都配置成功

最后写jsp界面,实现的效果图在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值