`
kevin_wanwei
  • 浏览: 117681 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jdbc工具类(2) (JDBC模板类)

阅读更多

这是我个人采用策略模式设计JDBC模板类:(供大家参考)

package daoUtil.daoTemplate;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import jdbcUtil.JdbcUtil;
import daoUtil.DAO;
import daoUtil.PrimaryKeyer;
import daoUtil.RowMapper;

public class DAOTemplate implements DAO{
	/**jdbc工具类*/
	private JdbcUtil jdbcUtil=JdbcUtil.getInstance();
	
	public  int delete(String sql, Object[] args) throws SQLException {
		if(args==null||args.length==0){
			return 0;
		}
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			conn=jdbcUtil.getConnection();
			ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn);
			for(int i=0;i<args.length;i++){
				ps.setObject(i+1,args[i]);
			}
			return ps.executeUpdate();
		}finally{
			jdbcUtil.free(rs,ps,conn);
		}
	}

	public int update(String sql, Object[] args) throws SQLException {
		if(args==null||args.length==0){
			return 0;
		}
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			conn=jdbcUtil.getConnection();
			ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn);
			for(int i=0;i<args.length;i++){
				ps.setObject(i+1,args[i]);
			}
			return ps.executeUpdate();
		}finally{
			jdbcUtil.free(rs,ps,conn);
		}
	}

	public Object find(String sql, Object[] args,RowMapper rowMapper) throws SQLException {
		if(args==null||args.length==0){
			return 0;
		}
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			conn=jdbcUtil.getConnection();
			ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn);
			for(int i=0;i<args.length;i++){
				ps.setObject(i+1,args[i]);
			}
			rs=ps.executeQuery();
			Object obj=null;
			while(rs.next()){
				obj=rowMapper.rowMapping(rs);
			}
			return obj;
		}finally{
			jdbcUtil.free(rs,ps,conn);
		}
	}


	public int getRecordCount(String tableName) throws SQLException {
		if(tableName==null||tableName.equals("")){
			return 0;
		}
		int count=0;
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			conn=jdbcUtil.getConnection();
			String sql="select count(*) from "+tableName;
			ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn);
			if(rs.next()){
				count=rs.getInt(1);
			}
		}finally{
			jdbcUtil.free(rs,ps,conn);
		}
		return count;
	}

	public int insert(String sql, Object[] args, int primaryKeyIndex,PrimaryKeyer primaryKeyer) throws SQLException {
		if(args==null||args.length==0){
			return 0;
		}
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			conn=jdbcUtil.getConnection();
			ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn);
			if(primaryKeyIndex<=-1){
				for(int i=0;i<args.length;i++){
					ps.setObject(i+1,args[i]);
				}
			}else if(primaryKeyIndex>-1&&primaryKeyIndex<args.length){
				for(int i=0;i<args.length;i++){
					if(i==primaryKeyIndex){
						ps.setObject(i+1,primaryKeyer.getPrimaryKey());
					}else{
						ps.setObject(i+1,args[i]);
					}
				}
			}else{
				throw new IllegalArgumentException("设置主键位置不正确!");
			}
			return ps.executeUpdate();
		}finally{
			jdbcUtil.free(rs,ps,conn);
		}
	}


	public Collection ObjectList(String sql, Object[] args,RowMapper rowMapper) throws SQLException {
		if(args==null||args.length==0){
			return null;
		}
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		Collection list=null;
		try {
			conn=jdbcUtil.getConnection();
			ps=jdbcUtil.scrollReadOnlyResultSet(sql,conn);
			for(int i=0;i<args.length;i++){
				ps.setObject(i+1,args[i]);
			}
			list=new ArrayList();
			rs=ps.executeQuery();
			while(rs.next()){
				Object obj=rowMapper.rowMapping(rs);
				list.add(obj);
			}
		}finally{
			jdbcUtil.free(rs,ps,conn);
		}
		return list;
	}

}

 

分享到:
评论

相关推荐

    jdbc工具类2

    1. **数据库连接**: JDBC工具类通常会提供一个静态方法来获取数据库连接。这个方法内部会使用`DriverManager.getConnection()`,需要传入数据库URL、用户名和密码。例如: ```java public static Connection get...

    jdbc 工具类、帮助类

    一个优秀的JDBC工具类或帮助类是为了简化数据库操作,提高代码的可读性和复用性而设计的。在给定的“jdbc 工具类、帮助类”主题中,我们可以探讨以下几个重要的知识点: 1. **连接管理**:在JDBC中,建立和关闭...

    javaJDBC项目模板

    "JDBCPro"是基础的JDBC模板,它主要展示了如何使用JDBC进行基本的数据操作。在这一阶段,你会看到以下关键知识点: 1. 数据库连接:通过`Class.forName()`加载数据库驱动,然后使用`DriverManager.getConnection()`...

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate是一个模板类,它提供了大量的方法来执行SQL查询、更新、存储过程等操作。这些方法会自动处理JDBC相关的资源关闭、异常转换等细节,使得代码更加整洁和健壮。 2. **数据库自适应** Spring...

    Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate

    Spring JDBC模板类——`org.springframework.jdbc.core.JdbcTemplate`是Spring框架中的核心组件,它为Java开发者提供了一种方便、安全的方式来执行SQL语句,而无需直接管理数据库连接。`JdbcTemplate`通过抽象出低...

    jdbc工具类-DBUtils1.6版jar包-正式版下载

    ### JDBC工具类-DBUtils1.6版jar包-正式版下载 #### 一、简介 Commons DbUtils是Apache组织提供的一款针对JDBC(Java Database Connectivity)进行封装的轻量级工具类库。该工具类库的主要目的是为了简化基于JDBC...

    Spring Data JDBC与JDBC的区别

    1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...

    dbutils JDBC第三方工具类

    **dbutils JDBC第三方工具类详解** 在Java编程中,数据库操作是不可或缺的一部分,而JDBC(Java Database Connectivity)则是Java语言连接数据库的标准接口。然而,直接使用JDBC进行数据库操作时,代码通常会显得...

    spring的JDBC开发类

    首先,Spring JDBC的核心接口是`JdbcTemplate`,它是Spring提供的一个模板类,用来执行SQL语句。`JdbcTemplate`提供了一组方法,涵盖了各种类型的SQL操作,如查询、更新、插入和删除。通过使用这个模板类,我们可以...

    spring-jdbc jar包.rar

    - **代码简洁性**:通过模板类和回调接口,Spring JDBC减少了大量重复的样板代码,使得数据库操作代码更加简洁明了。 - **事务管理**:集成Spring的事务管理,可以方便地实现事务的传播行为和回滚策略,提升代码的可...

    Spring_jdbc模板相关jar包(连接文件版本:5.1.47)

    总之,这个压缩包提供的Spring JDBC模板及相关连接文件,为基于Java和Spring的应用提供了处理MySQL数据库的强大工具。通过合理使用Spring提供的这些组件,开发者可以有效地提升数据库操作的效率和代码质量,减少错误...

    Spring_JDBC模板笔记

    在Java开发中,Spring框架提供了丰富的工具和库来处理数据库操作,其中JDBC模板(JdbcTemplate)是Spring对JDBC的一种封装,它极大地简化了数据库访问的复杂性,使得开发者可以更加专注于业务逻辑,而无需过多地关注...

    java开发常用工具类大全,程序员必备工具

    数据库操作是Java开发中不可或缺的部分,工具类可能包括JDBC模板、ORM框架(如Hibernate、MyBatis)等,简化SQL执行、事务管理、结果集映射等任务。 这些工具类集合旨在覆盖开发过程中的各种常见需求,尤其对于...

    java连接mysql数据库的三个不同的工具类

    - Apache的DBUtils是一个开源库,它提供了一个简洁的JDBC工具类,简化了数据库操作。DBUtils提供了一个`QueryRunner`类,它封装了执行SQL查询和更新的方法,比如`query()`和`update()`。 - `QueryRunner`类支持预...

    spring对jdbc的支持jar包

    6. **DataSourceUtils** 和 **JdbcUtils**:这两个工具类提供了数据库连接池的管理和通用的JDBC辅助方法,如关闭资源,从而帮助开发者编写更健壮的代码。 在实际使用中,Spring JDBC通常与Spring的其他模块结合,如...

    jdbc连接模板-代码

    JDBC连接模板的优势在于它可以将数据库操作封装到一个类中,使得代码更清晰,同时也方便进行事务管理和资源管理。在实际开发中,还可以使用Spring框架的JdbcTemplate或NamedParameterJdbcTemplate等高级工具,进一步...

    Spring JDBC常用Jar包

    这些工具类简化了SQL的执行,避免了大量模板代码,并且提供了异常处理机制。 5. **spring-beans-3.2.3.RELEASE.jar**: 春季bean模块,定义了如何加载、配置和管理对象,这是Spring框架的基础。在Spring JDBC中,你...

    传智播客JDBC课件

    总的来说,JDBC为Java程序员提供了访问数据库的强大工具,允许他们在各种数据库之间进行无缝切换,同时也提供了处理事务、批处理和元数据查询等功能,使得数据库编程更加便捷高效。在实际开发中,了解和熟练掌握JDBC...

    spring中jdbc的操作

    总之,Spring JDBC通过提供强大的模板类和工具类,降低了JDBC编程的复杂性,提高了代码的可维护性。在实际项目中,结合Spring的事务管理,可以构建出高效、健壮的数据库访问层。如果你对Spring JDBC感兴趣,这个资源...

    jdbc Utils 常用工具集

    JDBCUtils是一个常见的辅助工具类,它封装了JDBC的一些常用操作,以简化数据库的增删查改过程,避免重复性代码,提高开发效率。这篇博客(尽管链接无法直接访问)可能详细介绍了如何构建和使用这样的工具集。 ...

Global site tag (gtag.js) - Google Analytics