`

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项目练习 jdbc+struts

    **J2EE项目练习:JDBC+Struts** 在Java企业级开发中,J2EE(Java 2 Platform, Enterprise Edition)是一个标准平台,用于构建分布式、多层的Web应用程序。这个项目练习的核心是结合JDBC(Java Database ...

    j2ee 网络编程 JDBC技术

    在Java世界中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署企业级应用程序的平台,它包含了多种技术,其中一项关键的技术就是JDBC(Java Database Connectivity)。JDBC是Java语言中用于与...

    J2EE应用开发_使用JDBC访问Oracle

    3. 抽象封装:JDBC对数据库的基本操作进行了抽象,简化了开发过程,但同时也可能影响性能。 4. 可移植性:JDBC支持多种数据库,使得程序在不同数据库间迁移变得容易。 5. 兼容性:JDBC-ODBC桥驱动使得与已存在的ODBC...

    搞定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分布式管理) ...

    CodeNotes for J2EE - EJB, JDBC, JSP and Servlet

    《CodeNotes for J2EE - EJB, JDBC, JSP and Servlet》这本书是针对Java企业级应用开发的一份宝贵资源,主要涵盖了四个关键的技术领域:Enterprise JavaBeans(EJB),Java Database Connectivity(JDBC),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网上购书商城-jdbc+javabaean+jsp

    【标题】"j2ee网上购书商城-jdbc+javabaean+jsp"是一个基于J2EE技术构建的在线购物平台,它利用Java的核心技术,包括JDBC(Java Database Connectivity)、JavaBean以及JSP(JavaServer Pages)来实现对数据库的操作...

    J2EE指南(J2EE tutorial )

    - **企业Bean(Enterprise Beans)**:企业Bean是J2EE中的核心组件之一,主要用于封装业务逻辑。根据功能不同,企业Bean可以分为会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-...

    搞定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分布式管理) ...

    配置BEA WebLogic 8.1 JDBC连接

    在J2EE应用中,JDBC是访问数据库的基础,无论是直接还是间接。 2. **JDBC连接池**:连接池是预创建的数据库连接集合,可以有效提高数据库访问性能,减少资源浪费。当应用需要数据库连接时,可以从池中获取,使用...

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

    在本项目中,"Servlet+JSP+JDBC实现增删查(真分页)改j2ee小项目"是一个基于Java技术栈的Web应用程序,主要用于演示如何在J2EE环境中进行数据操作,包括添加、删除、查询和更新功能,并且实现了真正的分页功能。...

    简单的J2EE聊天室

    J2EE提供了JDBC(Java Database Connectivity)接口,方便开发者与各种类型的数据库进行交互。 6. **多线程处理**:为了实现实时的消息广播,服务器端可能需要使用多线程技术,确保每个新消息都能迅速地推送给所有...

    Weblogic JDBC 数据源配置和详细参数说明

    JDBC(Java Database Connectivity)是 Java 语言中的一种标准数据库连接技术,几乎所有需要访问数据库的 J2EE 应用程序都直接或间接地使用了它。JDBC 提供了一个统一的接口来访问不同的关系数据库管理系统(DBMS)...

    J2EE全实例教程

    **J2EE全实例教程** 本教程专注于J2EE(Java 2 Platform, Enterprise Edition)技术,这是一种由Oracle公司维护的、用于构建企业级分布式应用的开放标准平台。J2EE提供了一整套服务和组件模型,使得开发人员能够...

    包含了J2EE , EJB, MVC, JDBC, Struts技术的例子

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署企业级应用程序的框架。它由Sun Microsystems(现已被Oracle收购)推出,旨在提供一个跨平台、可扩展且安全的环境,用于构建分布式...

    J2EE实验.zip

    3. **EJB(Enterprise JavaBeans)**:EJB是J2EE的核心组件,提供了一种标准的方式来封装业务逻辑。你可能需要创建并部署EJBs,例如会话bean(Session Beans)用于方法调用,实体bean(Entity Beans)代表持久化的...

Global site tag (gtag.js) - Google Analytics