`

j2ee09:jdbc03:jdbc的最后封装(用到了反射)

    博客分类:
  • j2ee
 
阅读更多
1.实体类部分
package com.entity;
import java.util.Date;
public class News {
 private int nid;
 private String ntitle;
 private String ncontent;
 private Date date;
 private String author;
 
 public int getNid() {
  return nid;
 }
 public void setNid(int nid) {
  this.nid = nid;
 }
 public String getNtitle() {
  return ntitle;
 }
 public void setNtitle(String ntitle) {
  this.ntitle = ntitle;
 }
 public String getNcontent() {
  return ncontent;
 }
 public void setNcontent(String ncontent) {
  this.ncontent = ncontent;
 }
 public Date getDate() {
  return date;
 }
 public void setDate(Date date) {
  this.date = date;
 }
 public String getAuthor() {
  return author;
 }
 public void setAuthor(String author) {
  this.author = author;
 }
 public News(int nid, String ntitle, String ncontent, Date date,
   String author) {
  super();
  this.nid = nid;
  this.ntitle = ntitle;
  this.ncontent = ncontent;
  this.date = date;
  this.author = author;
 }
 public News(int nid, String ntitle, String ncontent,
   String author) {
  super();
  this.nid = nid;
  this.ntitle = ntitle;
  this.ncontent = ncontent;
  this.author = author;
 }
 
 public News() {
  
 }
 @Override
 public String toString() {
  return "News [author=" + author + ", date=" + date + ", ncontent="
    + ncontent + ", nid=" + nid + ", ntitle=" + ntitle + "]";
 }
}
 
2.公共方法部分
package com.comm;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
 
 private final String DB_DRIVER="oracle.jdbc.driver.OracleDriver";
 private final String DB_URL="jdbc:oracle:thin:@localhost:1521:XE";
 private final String DB_USER="xq";
 private final String DB_PWD="xq";
 
 
 Connection conn=null;
 PreparedStatement pstat=null;
 ResultSet res=null;
 
 
 /**
  * 获得数据库链接对象
  * **/
 public Connection getConn()
 {
  
  try
  {
   Class.forName(DB_DRIVER);
   conn=DriverManager.getConnection(DB_URL, DB_USER, DB_PWD);
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
  return conn;
 }
 /**
  * 执行insert,update,delete语句
  * sql:执行的sql语句
  * param:给sql语句中?赋的值
  * int:受影响行数
  * **/
 public int executeUpdate(String sql,Object[]param)
 {
  int row=0;
  try
  {
   this.getConn();
   
   pstat=conn.prepareStatement(sql);
   
   if(param!=null&&param.length>0)
   {
    for(int x=0;x<param.length;x++)
    {
     pstat.setObject((x+1),param[x]);
    }
    
   }
   row = pstat.executeUpdate();
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
  finally
  {
   this.closeAll(conn, pstat, res);
  }
  return row;
 }
 
 
 public List executeQuery(String sql,Object[]param,Class cls)
 {
  List list = new ArrayList();
  try
  {
   this.getConn();
   
   pstat=conn.prepareStatement(sql);
   
   if(param!=null&&param.length>0)
   {
    for(int x=0;x<param.length;x++)
    {
     pstat.setObject((x+1),param[x]);
    }
    
   }
   Field[]fs=cls.getDeclaredFields();
   res = pstat.executeQuery();
   while(res.next())
   {
    //1 创建对象
    Object obj=cls.newInstance();
    //2 给对象属性赋值
    
    for(int x=0;x<fs.length;x++)
    {
     Field f=fs[x];
     f.setAccessible(true);
     String type=f.getType().getName();
     if(type.equals("int"))
     {
      f.set(obj, res.getInt(x+1));
     }
     if(type.equals("java.lang.String"))
     {
      f.set(obj, res.getString(x+1));
     }
     if(type.equals("java.util.Date"))
     {
      f.set(obj, res.getDate(x+1));
     }
    }
    //3 将对象添加到集合
    list.add(obj);
    
   }
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
  finally
  {
   this.closeAll(conn, pstat, res);
  }
  return list;
 }
 /**
  * 释放数据库访问资源
  * */
 public void closeAll(Connection conn,Statement stat,ResultSet res)
 {
  try
  {
   if(res!=null)
   {
    res.close();
   }
   if(stat!=null)
   {
    stat.close();
   }
   if(conn!=null)
   {
    conn.close();
   }
   
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
 }
}
 
3.根据公共方法完成增删改查
package com.dao.impl;
import java.util.List;
import com.comm.BaseDao;
import com.dao.NewsDao;
import com.entity.News;
public class NewsDaoImpl extends BaseDao implements NewsDao {
 @Override
 public int saveNews(News news) {
  // TODO Auto-generated method stub
  String sql="insert into news values(?,?,?,sysdate,?)";
  Object []param={news.getNid(),news.getNtitle(),news.getNcontent(),news.getAuthor()};
  return super.executeUpdate(sql, param);
 
 }
 @Override
 public List<News> searchAllNews() {
  // TODO Auto-generated method stub
  String sql="select * from news";
  return super.executeQuery(sql, null, News.class);
  
 }
 
 @Override
 public int batDeleteNews(Integer[] nid) {
  String sql="delete from news where nid in(";
  for(int x=0;x<nid.length;x++)
  {
   if(x==nid.length-1)
   {
    sql=sql+"?)";
   }
   else
   {
    sql=sql+"?,";
   }
  }
  return super.executeUpdate(sql,nid);
 }
 
 
 public static void main(String[] args) {
  NewsDao dao = new NewsDaoImpl();
  /*News news = new News();
  news.setNid(10);
  news.setNtitle("新闻标题");
  news.setNcontent("新闻内容");
  news.setAuthor("作者");
  int row = dao.saveNews(news);
  if(row>0)
  {
   System.out.println("----成功");
  }
  else
  {
   System.out.println("----失败");
  }*/
  
 /* List<News> list=dao.searchAllNews();
  for(News n:list)
  {
   System.out.println(n);
  }*/
  
  
  int row = dao.batDeleteNews(new Integer[]{1,2});
  if(row>0)
  {
   System.out.println("----成功");
  }
  else
  {
   System.out.println("----失败");
  }
 }
}
 
 
 
分享到:
评论

相关推荐

    J2EE预览:使用XML封装JDBC语句设计

    通过XML保存JDBC相关配置(参考) 作者:13部王曦同学在学习J2EE的XML开发的小项目。 说明:做得越多,收获越多。 博文链接:https://java1573.iteye.com/blog/124704

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) ...

    j2ee学习路径 对初学者很有帮助

    面向对象-封装、继承、多态 内存的分析 递归 集合类、泛型、自动打包与解包、Annotation IO 多线程、线程同步 TCP/UDP AWT、事件模型、匿名类 正则表达式 反射机制 2:数据库(Oracle或者MySQL) SQL语句 多表...

    Servlet+JSP+JDBC实现增删查(真分页)改j2ee小项目

    Servlet+JSP+JDBC实现增删查(真分页)改j2ee小项目,数据库采用MySQL,log4j记录日志,自已封装了查询条件类和分页类,欢迎大家下载,互相学习。

    《程序天下:J2EE整合详解与典型案例》光盘源码

    第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    J2EE电子商务系统开发从入门到精通

    5.2.4 封装Hibernate数据库操作方法..... 81 5.2.5 数据持久化处理..... 84 5.2.6 Hibernate配置文件..... 90 5.3 员工登录模块..... 91 5.3.1 实现效果..... 91 5.3.2 视图组件的实现..... 92 5.3.3 控制器组件的...

    Web开发+java+ssh框架

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...

    SSH框架优点及事务说明

    典型的J2EE三层结构,分为表现层... Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transaction的封装,

    基于J2EE的医疗门诊查询系统

    本系统是基于J2EE的设计方案,使用表示层,逻辑层和数据层三层模式。使用B/S模式,大大减低了服务端的数据处理任务。...数据库层使用JDBC与底层数据库进行交互,逻辑层封装在Java类中,表示层由JSP实现。

    2-J2EE核心技术

    JavaEE核心技术Java语言的基本语法 OOP思想——封装、继承和多态 异常处理 java.lang包、java.util包、java.io包 JDBC数据库访问技术 Swing编程 使用NetBeans进行程序开发

    hibernate api

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...

    Java项目:在线书城书店系统(java+jdbc+Servlet+mysql)

    一个基于Java的网上书店的设计与实现,归纳出了...该项目是java技术的实战操作,采用了MVC设计模式,查询分页,持久化层方法的封装等等,对java技术的巩固很有帮助,为J2EE的学习打下基础,适用于课程设计,毕业设计。

Global site tag (gtag.js) - Google Analytics