这是我个人采用策略模式设计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;
}
}
分享到:
相关推荐
NULL 博文链接:https://just-do-myself.iteye.com/blog/663368
第2章 JDBC开发环境及配置 2.1 数据库系统 2.1.1 SQL数据库数据库基本操作语句 2.1.2 Microsoft SQL Server数据库设计及ODBC配置 2.1.3 Oracle 数据库的基本说明及其使用简介 2.1.4 MySQL的安装及使用简介 ...
包含c3p0-0.9.1.2.jar,commons-beanutils-1.8.3.jar,commons-dbutils-1.6.jar,commons-fileupload-1.2.1.jar,commons-io-1.4.jar, 等mysql和jstl的jar包。还含有jquery-1.8.2.min.js以及c3p0.xml模板和jdbc工具类。
工程中会大量使用apache基金会的通用工具类,使代码更加简洁高效,在其提供的工具类没有的情况下或方法不全(如,对汉字的处理)的情况 增加/扩展某一工具类,一般xxxUtilsExt为文件后缀 随便提一下使用第三方工具类的...
java代码自动生成工具: 1.根据Mysql数据库的表生成java实体类,包括注释 2.将Excel表格数据生成java实体类,包括注释 3.包括源文件和生成好的jar工具...java、log4j、poi表格操作、jdbc数据库操作、freeMarker模板使用
软件最大的特色就是操作SQL类的Assist查询帮助类(Assist是特别定制的查询工具,使用该工具一切操作都会变得超简单,比如:分页通过Assist只需要设置2个参数就可以实现,比如参数1=10,参数2=5,查询出来就是第10行到15行的...
jdbcutil工具类 与前端的操作部分 servlet层 filter层 单元测试 前端 全局页面 登录页面 找回密码页面 修改密码页面 学生页面 教师页面 教务员页面 管理员页面 - 不懂运行,下载完可以私聊问,可远程教学 该资源内...
自己写的Web开发工具包。具体包含下面4个部分: <br> 1. 一个简单的servlet+javabean+view的框架,并支持了Freemarker模板;... 对jakarta commons-fileupload封装便于上传下载的工具类。 <br>
其中,common中主要放一些全局会使用到的类,例如我会将工具类、默认的controller、pojo、dao放在里面;core中主要是放集成的工具,例如我这里放了对FreeMarkerView的扩展,可以将mybatis的相关类,或者以后集成更多...
软件最大的特色就是操作SQL类的Assist查询帮助类(Assist是特别定制的查询工具,使用该工具一切操作都会变得超简单,比如:分页通过Assist只需要设置2个参数就可以实现,比如参数1=10,参数2=5,查询出来就是第10行到15行的...
2)根据字段的java类型获取jdbc类型 我只定义了以下规则 // javaType --> jdbcType rules.put("java.lang.String", "VARCHAR"); rules.put("java.lang.Long", "DECIMAL"); rules.put("java.lang.Integer", ...
(1) spring-core.jar 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个...
软件最大的特色就是操作SQL类的SqlAssist查询帮助类(Assist是特别定制的查询工具,使用该工具一切操作都会变得超简单,比如:分页通过Assist只需要设置2个参数就可以实现,比如参数1=10,参数2=5,查询出来就是第10行到15...
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用都要...
软件最大的特色就是操作 SQL 类的 Assist 查询帮助类(Assist 是特别定制的查询工具,使用该工具一切操作都会变得超简单,比如:分页通过 Assist 只需要设置2个参数就可以实现,比如参数1=10,参数2=5,查询出来就是第10行...
附录2 java常用开发工具介绍 332 附录3 图解利用Eclipse3+Lomboz3+Tomcat开发JSP 335 本书较为全面地介绍了JSP技术,由浅入深、循序渐进地介绍了JSP的运行系统,基本概念,语法规范及其相关内容,从基本...
1.3 JavaWeb开发的基石-开发工具包JrDK 1.3.1 下载JDK 1.3.2 JDK的安装 1.3.3 配置和测试JDK 1.4 JavaWeb应用的Web服务器Tomcat 1.4.1 Web应用服务工作原理 1.4.2 web应用服务器汇总 1.4.3 获取Tomcat 1.4.4 熟悉...
开发环境:windows8,工具vs2012,数据库sqlserver2008 需求如下:绩效考评 标准:指标。 基础数据: ①评分结果分布等级(比如60~70为等级C),2 ②指标,用来考核。 1方向(比如JAVA,ASP.NET) 2类别(比如J2EE,...
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用都要...
15.4.2工具类的实现 304 15.4.3管理员登录与退出实现 306 15.4.4系统管理实现 313 15.4.5图书管理实现 319 15.4.6读者管理实现 329 15.4.7借还管理实现 333 15.4.8前台功能实现 336 本章小结 342