博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一下流水账
阅读量:6248 次
发布时间:2019-06-22

本文共 3018 字,大约阅读时间需要 10 分钟。

hot3.png

好像写一些总结性的东西,但是真得貌似没有什么可写的,不过为了培养一种习惯,就算是记流水账也要写一下,不然一直都不动笔,一直拖,可能以后都不会写了。

今天的早上把我做的一个学生管理系统从mysql上面迁移到Oracle上,本来在学校一直都是使用mysql的,没有用过其他的数据库,但是现在公司要使用Oracle,所以花费了好大力气,安装了Oracle10g,老实说,oracle跟mysql在很大程度上是差不多的,都是sql语句,但是也有不同,比如说那句坑爹的分页查询,以前在mysql中是要limit就可以了,但是在oracle中就不的不使用子查询,嵌套了一个select,但是说的也奇怪,oracle的分页语句查询是必须要把需要查找的记录前面的记录都找出来才能够截取自己想要的那部分,这样的话,如果是有好多条数据的话,速度不就很慢了吗?我实在是搞不懂,谁能跟我说一下一般的解决方法,还是有另外的其他方法可以查找到自己想要的数据?

子查询代码:

select t2.* from (select rownum r,t1.* from student t1 where rownum<=5) t2 where t2.r>10;

下午的时候,重构了一下分页方法的代码,很装B的使用了一下java的反射,希望可以完全的把后面的数据库操作方法完全独立出来,以后可以重复使用,本来还不好意思贴出来的,写到这里还是贴出来,请大家给点意见:

public class DaoImpl implements Dao {     DB db = new DB();     private Connection conn ;     private boolean flag = false ;     public DaoImpl(){         conn = this.db.getConnection();     }    /**  * 分页  * @param sql 分页语句 * @param sqlForCount 统计记录数语句  * @param currentPage 当前页  * @param pageSize 每页多少条数据  * @param clazz 操作POJO实体的class  * @param beanValueClazz 信息设值对象(自定义类),入口方法名必须是:getBean(ResultSet rs,Class clazz)  * @param request request对象  * @return  分页数据  */ @SuppressWarnings("unchecked") public 
List findList(String sqlForList,String sqlForCount, int currentPage,     int pageSize,Class clazz,Class
beanValueClazz,HttpServletRequest request) {     List list = new ArrayList();     int totalPage=0,totalCount=0; try {     Statement stmtForCount = this.conn.createStatement(); ResultSet rsForCount = stmtForCount.executeQuery(sqlForCount); if(rsForCount.next()){ //总记录数 totalCount =Integer.parseInt(rsForCount.getString(1)); } rsForCount.close(); stmtForCount.close(); //总页数 totalPage = (totalCount+pageSize-1)/pageSize; Statement stmt = this.conn.createStatement();     ResultSet rs = stmt.executeQuery(sqlForList); while(rs.next()){     Class c = Class.forName(beanValueClazz.getName());     Method method = c.getDeclaredMethod("getBean",ResultSet.class,Class.class);     Object[] args = {rs,clazz};     list.add(method.invoke(c.newInstance(),args)); }     rs.close();     stmt.close();     this.conn.close(); } catch (Exception e) {     e.printStackTrace(); } request.setAttribute("currentPage", currentPage); request.setAttribute("totalCount", totalCount); request.setAttribute("totalPage", totalPage); request.setAttribute("pageSize", pageSize); return list; }} beanValue.java的入口方法:public Object getBean(ResultSet rs,Class clazz){     Object obj = null; if(clazz==Student.class){     obj = getStudent(rs); } return obj; } public Student getStudent(ResultSet rs){     Student student = new Student(); try{     student.setSNo(rs.getString("SNo"));     student.setSName(rs.getString("SName"));     student.setSSex(rs.getString("SSex"));     student.setSNation(rs.getString("SNation")); }catch(SQLException e){     e.printStackTrace(); } return student; }servlet中的调用语句:findList(sql,sqlForCount,currentPage,pageSize,Student.class,beanValue.class,request);

转载于:https://my.oschina.net/u/185335/blog/63914

你可能感兴趣的文章
SQL Server转sqlite数据库
查看>>
python print和strip
查看>>
2016学年第一学期软件工程第二次作业
查看>>
Powershell检查邮件队列设置阈值,通过html形式进行邮件告警
查看>>
痞子衡嵌入式:恩智浦i.MXRT系列微控制器量产神器RT-Flash用户指南
查看>>
PHP学习笔记1
查看>>
MySQL学习1
查看>>
14.linux下复制粘贴
查看>>
网络编程
查看>>
List数据转Map数据并进行分组排序
查看>>
word - 如何让 图片任意移动
查看>>
安装Oracle
查看>>
LoadRunner基础知识
查看>>
How to helloworld on Xcode
查看>>
PHP常见设计模式简单实现
查看>>
java课堂相关问题
查看>>
图片溢出div问题的最终解决方案
查看>>
区分Web Server和应用服务器
查看>>
计算字符串长度,加车头
查看>>
$ sudo python -m pip install pylint 出错解决方法
查看>>