`
aiyalhw
  • 浏览: 61939 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

DAO层调用数据库的公用方法

阅读更多
接口类
package com.lhw.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public interface DaoManager {

/**
* 获取所有列表集合
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public List<Map<String, Object>> getList(String sql, Connection conn) throws SQLException;

/**
*
* @param list
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public List<Map<String, Object>> getList(List<?> list , String sql, Connection conn) throws SQLException;

/**
*
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public ResultSet executeQuery(String sql, Connection conn) throws SQLException;

/**
*
* @param list
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public ResultSet executeQuery(List<?> list ,String sql, Connection conn) throws SQLException;

/**
*
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int update(String sql, Connection conn) throws SQLException;

/**
*
* @param list
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int update(List<?> list ,String sql, Connection conn) throws SQLException;

/**
*
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int delete(String sql, Connection conn) throws SQLException;

/**
*
* @param list
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int delete(List<?> list ,String sql, Connection conn) throws SQLException;

/**
*
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int insert(String sql, Connection conn) throws SQLException;

/**
*
* @param list
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int insert(List<?> list ,String sql, Connection conn) throws SQLException;

/**
*
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int executeUpdate(String sql, Connection conn) throws SQLException ;

/**
*
* @param pramList
* @param sql
* @param conn
* @return
* @throws SQLException
*/
public int executeUpdate(List<?> pramList,String sql, Connection conn) throws SQLException ;

/**
*
*/
public void close();
}
分享到:
评论
4 楼 楚之异人 2012-08-15  
sql语句不用写在Dao类里面吗?
3 楼 aiyalhw 2009-11-22  
连接类
package com.lhw.dao.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conn {
private static Connection conn = null;

private Conn() {

}

public static void init() throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ora92";
String user = "smsexp";
String password = "smsexp";
conn = DriverManager.getConnection(url, user, password);
}

public static Connection getConn() {
if (conn == null) {
try {
init();
} catch (ClassNotFoundException e) {
System.out.println(">>>>>初始化连接失败-->"+e.getMessage());
e.printStackTrace();
} catch (SQLException e) {
System.out.println(">>>>>初始化连接失败-->"+e.getMessage());
e.printStackTrace();
}
}
return conn;
}

public static void destroy(){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2 楼 aiyalhw 2009-11-22  
aiyalhw 写道
续上
/**
* DAO实现类
*/
package com.lhw.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.lhw.dao.DaoManager;

public class Dao implements DaoManager{
private static PreparedStatement ps = null;
private static ResultSet rs = null;

public List<Map<String, Object>> getList(String sql, Connection conn) throws SQLException {
ResultSet res = executeQuery(sql, conn);
/**
* ResultSetMetaData可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。
* 详细解释查看JAVAAPI文档
*/
ResultSetMetaData rsMetaData = res.getMetaData();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
while (res.next()) {
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 1; i <= rsMetaData.getColumnCount(); i++) {
Object object = res.getObject(rsMetaData.getColumnName(i));
//将毫秒时间精确到秒
if("java.sql.Timestamp".equals(rsMetaData.getColumnClassName(i))){
if(object != null && object.toString().indexOf(".") != -1){
object = object.toString().split("\\.")[0];
}
}
map.put(rsMetaData.getColumnName(i).toUpperCase(), object);
}
list.add(map);
}
close();
return list;
}

public  ResultSet executeQuery(String sql, Connection conn) throws SQLException {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
return rs;
}

public List<Map<String, Object>> getList(List<?> pramList , String sql, Connection conn) throws SQLException {

ResultSet res = executeQuery(pramList,sql, conn);
/**
* ResultSetMetaData可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。
* 详细解释查看JAVAAPI文档
*/
ResultSetMetaData rsMetaData = res.getMetaData();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
while (res.next()) {

Map<String, Object> map = new HashMap<String, Object>();

for (int i = 1; i <= rsMetaData.getColumnCount(); i++) {
Object object = res.getObject(rsMetaData.getColumnName(i));
//将毫秒时间精确到秒
if("java.sql.Timestamp".equals(rsMetaData.getColumnClassName(i))){
if(object != null && object.toString().indexOf(".") != -1){
object = object.toString().split("\\.")[0];
}
}
map.put(rsMetaData.getColumnName(i).toUpperCase(), object);
}
list.add(map);
}
close();
return list;
}

public  ResultSet executeQuery(List<?> pramList ,String sql, Connection conn) throws SQLException {

ps = conn.prepareStatement(sql);
if(pramList!=null){
for(int i = 0 ;i <pramList.size();i++){
ps.setObject(i+1, pramList.get(i));
}
}
rs = ps.executeQuery();
return rs;
}

public  void close() {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

1 楼 aiyalhw 2009-11-22  
//续上
public int delete(String sql, Connection conn) throws SQLException {
return executeUpdate(sql, conn);
}

public int delete(List<?> pramList, String sql, Connection conn) throws SQLException {
return executeUpdate(pramList, sql, conn);
}

public int update(String sql, Connection conn) throws SQLException {
return executeUpdate(sql, conn);
}

public int update(List<?> pramList, String sql, Connection conn) throws SQLException {
return executeUpdate(pramList, sql, conn);
}

public int insert(String sql, Connection conn) throws SQLException {
return executeUpdate(sql, conn);
}

public int insert(List<?> pramList, String sql, Connection conn) throws SQLException {
return executeUpdate(pramList, sql, conn);
}

public int executeUpdate(String sql, Connection conn) throws SQLException {
ps = conn.prepareStatement(sql);
return ps.executeUpdate();
}

public int executeUpdate(List<?> pramList,String sql, Connection conn) throws SQLException {
ps = conn.prepareStatement(sql);
if(pramList!=null){
for(int i = 0 ;i <pramList.size();i++){
ps.setObject(i+1, pramList.get(i));
}
}
return ps.executeUpdate();
}
}

相关推荐

    封装各种数据库操作JAR

    - **DAO(Data Access Object)模式**:提供了一层抽象,将业务逻辑与底层数据库操作分离。 - **SQL语句的动态构造**:如使用PreparedStatement来防止SQL注入并提高效率。 - **事务管理**:确保一组数据库操作要么...

    Spring+Hibernate实现)Hibernate公用类

    通过这种方式,Service层可以直接调用`EntityDao`接口的方法,而无需关心具体的数据库操作细节。这提高了代码的可维护性和可扩展性,因为即使数据模型发生变化,也只需要修改对应的实体类,而不需要改动DAO层。 ...

    Visual Basic访问SQL Server数据库方案的比较.pdf

    应用程序通过调用这些函数,再由驱动程序管理器将调用转发给相应的数据库驱动器(如SQLSRVR.DLL),最终访问数据库。在Visual Basic中,使用ODBC API进行数据库编程会涉及设置环境句柄和执行SQL语句等步骤。 3. VB...

    Spring+Struts+ibatis讲解

    2. 业务逻辑层(Service):Service层封装了应用的业务逻辑,它调用DAO层的方法来与数据库交互。通常,Service层分为接口(iface包)和实现类(impl包)。 3. 数据访问层(DAO):DAO层负责与数据库进行通信,具体的...

    SSH 项目框架搭建总结

    cn.itcast.elec.dao:项目的dao层,负责连接数据库的操作 cn.itcast.elec.daomain:封装实体对象(PO对象),对应连接数据库表的映射文件 cn.itcast.elec.service:项目service层,负责操作各个功能模块的业务逻辑 ...

    VB访问SQL Server数据库的几种方案.pdf

    访问数据库资源的公用函数集包含在一个动态链接库(DLL)中,该DLL被称为驱动程序管理器(ODBC.DLL)。应用程序通过调用驱动程序管理器中的函数,驱动程序管理器反过来通过驱动器(SQLSRVR.DLL)将它们送到服务器中...

    Struts2.1.6实战课件精解_02

    这涉及到使用JXL库读取Excel文件、创建序列和表、配置JNDI、创建工程和公用组件、DAO层、Service层、以及控制层的Action代码。 #### 总结 《Struts2.1.6实战课件精解_02》不仅提供了Struts2框架的理论知识,更重要...

    C#WINFORM小例

    DAO是一种设计模式,用于封装对数据库的所有操作,使得业务逻辑层与数据层解耦。在C#中,一个DAO类通常会包含对数据库的CRUD(创建、读取、更新、删除)操作,并可能通过接口或工厂模式进行实例化。 综上所述,这个...

    VB应用程序对SQL Server的访问.pdf

    DAO技术主要是用于通过Jet引擎(Microsoft Access的数据库引擎)访问和管理存储在Microsoft Jet格式数据库文件中的数据。这种方法虽不是性能最好的管理客户端和服务器之间对话的方式,但它有许多优点。在使用DAOs...

    基于SSH的网上书城_j2ee专周_源代码+数据库(oracle)+课程设计报告

    其次,管理员通过查找到对应用户,直接修改用户相应信息,在行末的修改按钮点击, 调用CustomAction中的updateCustomPwdandRole()方法,对修改内容进行数据库更新 最后,修改成功后再次挑战到该页面(再次显示所有用户信息)...

    案例课程B-S架构-1期 详细设计说明书7-个人维护模块.pdf

    - **流程逻辑**:控制端由`UserInfoManageServlet.java`处理请求,调用模型端的`SUsersAction.java`,通过`daoManager`与数据库交互,完成密码修改。用户输入新旧密码,提交后,系统会验证新旧密码的合法性,成功后...

    基于VB的AutoCAD二次开发技术_杨立军.pdf

    - ODBC Direct方式:通过ODBC驱动层,DAO方式能够管理其它数据库。 ### 总结 VB与AutoCAD结合的二次开发技术能够极大扩展AutoCAD的功能,满足特定行业的需求。通过实例冲模CAD系统的开发,可以看出如何利用VB进行...

    vbs能调用的系统对象小结

    - `DAO.DBEngine.35`: DAO引擎。 - `ADODB.Catalog`: 目录管理。 - `ADODB.Table`: 表管理。 #### SQL对象 SQL对象用于管理和操作SQL Server数据库。 - **对象**: - `SQLDMO.SQLServer`: SQL Server实例。 -...

    计算机网络编程试题及答案

    - (C) DAO,正确,数据访问对象是早期的数据库访问技术。 - (D) ADO,正确,ActiveX数据对象用于数据库编程。 以上是对题目涉及知识点的详细解释,涵盖了类的构造和访问控制、面向对象编程、C#语法、操作系统接口...

    多模块架构,springboot

    3. **数据访问模块(Data Access Modules)**:处理数据库交互,包括实体类、DAO层以及与数据库相关的配置。 4. **API模块(API Modules)**:定义对外的接口,可以是RESTful API,供前端或其他微服务调用。 5. **Web...

    vb.net基础教程

    - 调用不同的方法实现不同功能。 10. **使用 New 关键字** - 创建新的对象实例。 11. **释放对对象的引用** - 通过 `Nothing` 设置对象变量为 null。 12. **把对象传递到一个过程** - 作为参数传递对象。 13....

    VB6.0中文版循序渐进教程

    - **Windows API调用**:教授调用Windows API函数的方法,扩展VB6.0的应用范围和功能。 #### 8. 综合实践与案例分析 - **项目实例**:通过具体案例,如一个简单的库存管理系统或学生信息查询系统,综合运用所学...

    自己动手写Struts.pdf

    - **使用数据访问对象DAO**:实现对数据库的操作,封装增删改查等功能。 - **异常处理机制**:处理可能出现的异常情况,确保程序的健壮性。 - **小结**:通过以上步骤,我们可以构建一个简单的基于MVC模式的Web...

    cms后台管理

    与数据库交互的持久层接口 public interface MyContentDao { public List&lt;MyContent&gt; getList(); } 持久层实现类 @Repository//持久层 public class MyContentDaoImpl extends HibernateBaseDao, Integer&gt; ...

Global site tag (gtag.js) - Google Analytics