这是我个人采用策略模式设计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;
}
}
分享到:
相关推荐
1. **数据库连接**: JDBC工具类通常会提供一个静态方法来获取数据库连接。这个方法内部会使用`DriverManager.getConnection()`,需要传入数据库URL、用户名和密码。例如: ```java public static Connection get...
一个优秀的JDBC工具类或帮助类是为了简化数据库操作,提高代码的可读性和复用性而设计的。在给定的“jdbc 工具类、帮助类”主题中,我们可以探讨以下几个重要的知识点: 1. **连接管理**:在JDBC中,建立和关闭...
"JDBCPro"是基础的JDBC模板,它主要展示了如何使用JDBC进行基本的数据操作。在这一阶段,你会看到以下关键知识点: 1. 数据库连接:通过`Class.forName()`加载数据库驱动,然后使用`DriverManager.getConnection()`...
SpringJdbcTemplate是一个模板类,它提供了大量的方法来执行SQL查询、更新、存储过程等操作。这些方法会自动处理JDBC相关的资源关闭、异常转换等细节,使得代码更加整洁和健壮。 2. **数据库自适应** Spring...
Spring JDBC模板类——`org.springframework.jdbc.core.JdbcTemplate`是Spring框架中的核心组件,它为Java开发者提供了一种方便、安全的方式来执行SQL语句,而无需直接管理数据库连接。`JdbcTemplate`通过抽象出低...
### JDBC工具类-DBUtils1.6版jar包-正式版下载 #### 一、简介 Commons DbUtils是Apache组织提供的一款针对JDBC(Java Database Connectivity)进行封装的轻量级工具类库。该工具类库的主要目的是为了简化基于JDBC...
1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...
**dbutils JDBC第三方工具类详解** 在Java编程中,数据库操作是不可或缺的一部分,而JDBC(Java Database Connectivity)则是Java语言连接数据库的标准接口。然而,直接使用JDBC进行数据库操作时,代码通常会显得...
首先,Spring JDBC的核心接口是`JdbcTemplate`,它是Spring提供的一个模板类,用来执行SQL语句。`JdbcTemplate`提供了一组方法,涵盖了各种类型的SQL操作,如查询、更新、插入和删除。通过使用这个模板类,我们可以...
- **代码简洁性**:通过模板类和回调接口,Spring JDBC减少了大量重复的样板代码,使得数据库操作代码更加简洁明了。 - **事务管理**:集成Spring的事务管理,可以方便地实现事务的传播行为和回滚策略,提升代码的可...
总之,这个压缩包提供的Spring JDBC模板及相关连接文件,为基于Java和Spring的应用提供了处理MySQL数据库的强大工具。通过合理使用Spring提供的这些组件,开发者可以有效地提升数据库操作的效率和代码质量,减少错误...
在Java开发中,Spring框架提供了丰富的工具和库来处理数据库操作,其中JDBC模板(JdbcTemplate)是Spring对JDBC的一种封装,它极大地简化了数据库访问的复杂性,使得开发者可以更加专注于业务逻辑,而无需过多地关注...
数据库操作是Java开发中不可或缺的部分,工具类可能包括JDBC模板、ORM框架(如Hibernate、MyBatis)等,简化SQL执行、事务管理、结果集映射等任务。 这些工具类集合旨在覆盖开发过程中的各种常见需求,尤其对于...
- Apache的DBUtils是一个开源库,它提供了一个简洁的JDBC工具类,简化了数据库操作。DBUtils提供了一个`QueryRunner`类,它封装了执行SQL查询和更新的方法,比如`query()`和`update()`。 - `QueryRunner`类支持预...
6. **DataSourceUtils** 和 **JdbcUtils**:这两个工具类提供了数据库连接池的管理和通用的JDBC辅助方法,如关闭资源,从而帮助开发者编写更健壮的代码。 在实际使用中,Spring JDBC通常与Spring的其他模块结合,如...
JDBC连接模板的优势在于它可以将数据库操作封装到一个类中,使得代码更清晰,同时也方便进行事务管理和资源管理。在实际开发中,还可以使用Spring框架的JdbcTemplate或NamedParameterJdbcTemplate等高级工具,进一步...
这些工具类简化了SQL的执行,避免了大量模板代码,并且提供了异常处理机制。 5. **spring-beans-3.2.3.RELEASE.jar**: 春季bean模块,定义了如何加载、配置和管理对象,这是Spring框架的基础。在Spring JDBC中,你...
总的来说,JDBC为Java程序员提供了访问数据库的强大工具,允许他们在各种数据库之间进行无缝切换,同时也提供了处理事务、批处理和元数据查询等功能,使得数据库编程更加便捷高效。在实际开发中,了解和熟练掌握JDBC...
总之,Spring JDBC通过提供强大的模板类和工具类,降低了JDBC编程的复杂性,提高了代码的可维护性。在实际项目中,结合Spring的事务管理,可以构建出高效、健壮的数据库访问层。如果你对Spring JDBC感兴趣,这个资源...
JDBCUtils是一个常见的辅助工具类,它封装了JDBC的一些常用操作,以简化数据库的增删查改过程,避免重复性代码,提高开发效率。这篇博客(尽管链接无法直接访问)可能详细介绍了如何构建和使用这样的工具集。 ...