java jdbc 分页、元数据分析.doc

上传人:小** 文档编号:87217173 上传时间:2019-03-29 格式:DOC 页数:19 大小:622KB
返回 下载 相关 举报
java jdbc 分页、元数据分析.doc_第1页
第1页 / 共19页
java jdbc 分页、元数据分析.doc_第2页
第2页 / 共19页
java jdbc 分页、元数据分析.doc_第3页
第3页 / 共19页
java jdbc 分页、元数据分析.doc_第4页
第4页 / 共19页
java jdbc 分页、元数据分析.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《java jdbc 分页、元数据分析.doc》由会员分享,可在线阅读,更多相关《java jdbc 分页、元数据分析.doc(19页珍藏版)》请在金锄头文库上搜索。

1、分页、元数据分析1. 表之间的关联的级联关系1. 不设置 默认。当删除主表中的数据时,如果子表中已经引用了主表中的数据,(主外键引用),则主表中的数据不能删除。2. 级联删除,会级联删除所有关联数据。3. 设置数据删除缓存的引用,会把关联表的该外键设为null。2. 条件查询public class ContactDao / 查询所有联系人public List query2(Contact con) List list = null;QueryRunner run = new QueryRunner(DataSouceUtils.getDataSource();/ 1:先声明sqlStrin

2、gBuilder sql = new StringBuilder(select * from contacts where 1=1);/声明一个参数列表List params = new ArrayList();/ 2:判断如果con的名称有值if (con.getName() != null & !con.getName().trim().equals() sql.append( and name like ?);params.add(%+con.getName()+%);if (con.getSex() != null & !con.getSex().trim().equals() sql

3、.append( and sex=?);params.add(con.getSex();if(con.getStart()!=null)sql.append( and age=?);params.add(con.getStart();if(con.getEnd()!=null)sql.append( and age=?);params.add(con.getEnd();if(con.getAddr()!=null & !con.getAddr().trim().equals()sql.append( and addr like ?);params.add(%+con.getAddr()+%);

4、list = run.query(sql.toString(),new BeanListHandler(Contact.class),params.toArray();return list;3. 用dbutils管理事务3.1. 定义事务是指用户的操作只有一种结果,成功或是失败。3.2. 如何来管理数据库事务try / 开启事务connection.setAutoCommit(false);/ ./ 提交mit(); catch (Exception e) / 回滚connection.rollback(); finally / 将自动提交状态设置为原状态connection.setAuto

5、Commit(true);/ 归还连接connection.close();3.3. 什么时候用事务对一个表进行多次 insert, update, delete对多个表进行 insert, update, delete3.4. 管理事务的关键点在多次操作同一个表,或是操作多个表,必须要使用同一个连接3.5. 正常操作,对一个表执行两次insert在dbutils中所有方法可以直接接收一个sql去执行,也可以接收一个connection连接。3.6. 示例:事务的代码操作4. 分页4.1. 简单分页代码示例public class QuerySerlvet extends HttpServle

6、t public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /定义每页显示多少行int pageSize = 10;/1:获取用户相看第几页String _p = request.getParameter(page);if(_p=null)_p=1;/2:计算开始值int currentPage = Integer.parseInt(_p);int start = (currentPage-1)*pageSize;tryQuer

7、yRunner run = new QueryRunner(DataSouceUtils.getDataSource();/3:查询数据表的总行数String sql= select count(1) from users;int rowCount = Integer.parseInt(+run.query(sql,new ScalarHandler();/4:计算分多少页int pageCount = rowCount/pageSize+(rowCount%pageSize=0?0:1);/5:将pageCount放到requestrequest.setAttribute(pageCount

8、, pageCount);/6:查询某些行sql = select * from users limit +start+,+pageSize;ListMap list = run.query(sql,new MapListHandler();/放到reqqestrequest.setAttribute(list,list);request.getRequestDispatcher(/show.jsp).forward(request, response);catch(Exception e)4.2. 计算页数算法l pageCount = rowCount/pageSize + (rowCou

9、nt % pageSize = 0 ? 0 : 1);页数=总条数/每页条数+(总数 % 每页条数 = 0 ? 0: 1);l pageCount = (rowCount + (pageSize 1) / pageSize;页数=(总条数+(每页条数-1) / 每页条数;4.3. 给分页继续分页(每页显示多少页码)第N页页码范围推理公式第1 页110If(currentPage=pageNum/2) startNum=1 endNum= 10;第2 页110第3 页110第4 页110第5 页110第6 页2112=6-(pageNum/2-1),11=6+(pageNum/2)3=7-(pa

10、geNum/2-1),12=7+(pageNum/2)4=8-(pageNum/2-1),13=8+(pageNum/2)第7 页312第8 页413第101页92101endNum=101startNum=101-10+115个页码:92162=9-(pageNum/20)103173=10-74.4. 以下是完整示例代码public class ShowServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletExc

11、eption, IOException /1:确定每页显示多少条记录int pageSize = 10;/2:读取用户准备在看第几页String _currentPage = request.getParameter(page);/3:将上面的值转换intif(_currentPage=null)_currentPage=1;if(!_currentPage.matches(d*)_currentPage=1;int currentPage = Integer.parseInt(_currentPage);if(currentPagepageCount)currentPage=pageCoun

12、t;/6:计算开始的下标int start = (currentPage-1)*pageSize;/7:组成查询的sqlsql = select * from users limit +start+,+pageSize;/8:执行查询和数据封装ListMap list = run.query(sql,new MapListHandler();/9:封装到requestrequest.setAttribute(list,list);request.setAttribute(pageCount, pageCount);request.setAttribute(currentPage,currentPage);/10:读取开始的页码和结束的页码int pageNum = 15;/定义最多显式多少个页码int startNum = 0;int endNum = 0;/11:判断是否足可以再分页if(pageCount=pageNum)sta

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号