流水勘定をつける

3416 ワード

総括的なものを書いているようですが、本当に書くことができないようですが、習慣を養うために、流水帳を覚えても書かなければなりません.そうしないと、ずっとペンを動かさず、ずっと引きずっていて、これからは書かないかもしれません.
今朝、私が作った学生管理システムをmysqlからOracleに移行しました.もともと学校ではmysqlを使っていたので、他のデータベースを使ったことはありませんが、今は会社がOracleを使うので、力を入れてOracle 10 gをインストールしました.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 <T extends Object> List findList(String sqlForList,String sqlForCount, int currentPage, 

     int pageSize,Class clazz,Class<T> 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);