diff --git a/JDBC_Review/.classpath b/JDBC_Review/.classpath new file mode 100644 index 0000000..85d1e6b --- /dev/null +++ b/JDBC_Review/.classpath @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JDBC_Review/.project b/JDBC_Review/.project new file mode 100644 index 0000000..9ae9e0a --- /dev/null +++ b/JDBC_Review/.project @@ -0,0 +1,31 @@ + + + JDBC_Review + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/JDBC_Review/.settings/.jsdtscope b/JDBC_Review/.settings/.jsdtscope new file mode 100644 index 0000000..92e666d --- /dev/null +++ b/JDBC_Review/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/JDBC_Review/.settings/org.eclipse.jdt.core.prefs b/JDBC_Review/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/JDBC_Review/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/JDBC_Review/.settings/org.eclipse.wst.common.component b/JDBC_Review/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..7bfe8fb --- /dev/null +++ b/JDBC_Review/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/JDBC_Review/.settings/org.eclipse.wst.common.project.facet.core.xml b/JDBC_Review/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..b52a19e --- /dev/null +++ b/JDBC_Review/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/JDBC_Review/.settings/org.eclipse.wst.jsdt.ui.superType.container b/JDBC_Review/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/JDBC_Review/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/JDBC_Review/.settings/org.eclipse.wst.jsdt.ui.superType.name b/JDBC_Review/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/JDBC_Review/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/JDBC_Review/WebContent/META-INF/MANIFEST.MF b/JDBC_Review/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/JDBC_Review/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/JDBC_Review/WebContent/WEB-INF/classes/c3p0-config.xml b/JDBC_Review/WebContent/WEB-INF/classes/c3p0-config.xml new file mode 100644 index 0000000..d22e72e --- /dev/null +++ b/JDBC_Review/WebContent/WEB-INF/classes/c3p0-config.xml @@ -0,0 +1,28 @@ + + + + + + + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1:3306/test?characterEncode=UTF-8 + root + 123456 + + + 5 + + 10 + + 10 + + 50 + + + 20 + + 5 + + + + \ No newline at end of file diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/cms/domain/Customer.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/cms/domain/Customer.class new file mode 100644 index 0000000..dd65520 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/cms/domain/Customer.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/CriteriaCustomer.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/CriteriaCustomer.class new file mode 100644 index 0000000..f591ba7 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/CriteriaCustomer.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/CustomerDao.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/CustomerDao.class new file mode 100644 index 0000000..9421a1d Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/CustomerDao.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/Dao.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/Dao.class new file mode 100644 index 0000000..b665d7e Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/Dao.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/impl/CustomerDaoImpl.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/impl/CustomerDaoImpl.class new file mode 100644 index 0000000..afc8981 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dao/impl/CustomerDaoImpl.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/QR.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/QR.class new file mode 100644 index 0000000..07fd457 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/QR.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/RsHandler.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/RsHandler.class new file mode 100644 index 0000000..3136bed Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/RsHandler.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl$1.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl$1.class new file mode 100644 index 0000000..6738d12 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl$1.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl.class new file mode 100644 index 0000000..3193548 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/entity/Customer.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/entity/Customer.class new file mode 100644 index 0000000..25b4470 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/entity/Customer.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/servlet/CustomerServlet.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/servlet/CustomerServlet.class new file mode 100644 index 0000000..f730f52 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/servlet/CustomerServlet.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdao/AccountDao.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdao/AccountDao.class new file mode 100644 index 0000000..195b005 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdao/AccountDao.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdao/AccountDao1.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdao/AccountDao1.class new file mode 100644 index 0000000..4078387 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdao/AccountDao1.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdemo/TestDemo.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdemo/TestDemo.class new file mode 100644 index 0000000..3b4c562 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdemo/TestDemo.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdemo/TestDemo1.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdemo/TestDemo1.class new file mode 100644 index 0000000..78d7b22 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/testdemo/TestDemo1.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/BaseServlet.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/BaseServlet.class new file mode 100644 index 0000000..3790d8a Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/BaseServlet.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/DBUtils.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/DBUtils.class new file mode 100644 index 0000000..a31c0c0 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/DBUtils.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils.class new file mode 100644 index 0000000..83a252d Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils1.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils1.class new file mode 100644 index 0000000..652e31d Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils1.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils2.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils2.class new file mode 100644 index 0000000..789d872 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/JdbcUtils2.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/TxQueryRunner.class b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/TxQueryRunner.class new file mode 100644 index 0000000..38f4abc Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/classes/com/cyc/mvcapp/utils/TxQueryRunner.class differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/c3p0-0.9.5.2-sources.jar b/JDBC_Review/WebContent/WEB-INF/lib/c3p0-0.9.5.2-sources.jar new file mode 100644 index 0000000..5dd2790 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/c3p0-0.9.5.2-sources.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/c3p0-0.9.5.2.jar b/JDBC_Review/WebContent/WEB-INF/lib/c3p0-0.9.5.2.jar new file mode 100644 index 0000000..579cedd Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/c3p0-0.9.5.2.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7-javadoc.jar b/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7-javadoc.jar new file mode 100644 index 0000000..dcfb8e5 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7-javadoc.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7-sources.jar b/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7-sources.jar new file mode 100644 index 0000000..faea98e Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7-sources.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7.jar b/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7.jar new file mode 100644 index 0000000..b30458e Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/commons-dbutils-1.7.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/commons-logging-1.2.jar b/JDBC_Review/WebContent/WEB-INF/lib/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/commons-logging-1.2.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/jstl.jar b/JDBC_Review/WebContent/WEB-INF/lib/jstl.jar new file mode 100644 index 0000000..a02abec Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/jstl.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/mchange-commons-java-0.2.11-sources.jar b/JDBC_Review/WebContent/WEB-INF/lib/mchange-commons-java-0.2.11-sources.jar new file mode 100644 index 0000000..eac96d2 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/mchange-commons-java-0.2.11-sources.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/mchange-commons-java-0.2.11.jar b/JDBC_Review/WebContent/WEB-INF/lib/mchange-commons-java-0.2.11.jar new file mode 100644 index 0000000..88f1d47 Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/mchange-commons-java-0.2.11.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/mysql-connector-java-5.1.44-bin.jar b/JDBC_Review/WebContent/WEB-INF/lib/mysql-connector-java-5.1.44-bin.jar new file mode 100644 index 0000000..2f2e32d Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/mysql-connector-java-5.1.44-bin.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/lib/standard.jar b/JDBC_Review/WebContent/WEB-INF/lib/standard.jar new file mode 100644 index 0000000..bc528ac Binary files /dev/null and b/JDBC_Review/WebContent/WEB-INF/lib/standard.jar differ diff --git a/JDBC_Review/WebContent/WEB-INF/web.xml b/JDBC_Review/WebContent/WEB-INF/web.xml new file mode 100644 index 0000000..5fb8381 --- /dev/null +++ b/JDBC_Review/WebContent/WEB-INF/web.xml @@ -0,0 +1,20 @@ + + + JDBC_Review + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + + CustomerServlet + com.cyc.mvcapp.servlet.CustomerServlet + + + CustomerServlet + *.do + + \ No newline at end of file diff --git a/JDBC_Review/account.sql b/JDBC_Review/account.sql new file mode 100644 index 0000000..346e283 --- /dev/null +++ b/JDBC_Review/account.sql @@ -0,0 +1,52 @@ +-- MySQL dump 10.16 Distrib 10.1.19-MariaDB, for Win32 (AMD64) +-- +-- Host: localhost Database: localhost +-- ------------------------------------------------------ +-- Server version 10.1.19-MariaDB + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `account` +-- + +DROP TABLE IF EXISTS `account`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `account` ( + `id` int(4) NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + `balance` double NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `account` +-- + +LOCK TABLES `account` WRITE; +/*!40000 ALTER TABLE `account` DISABLE KEYS */; +INSERT INTO `account` VALUES (1,'jia',2004),(2,'yi',1992); +/*!40000 ALTER TABLE `account` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2017-12-15 20:03:37 diff --git a/JDBC_Review/customers.sql b/JDBC_Review/customers.sql new file mode 100644 index 0000000..e2777dc --- /dev/null +++ b/JDBC_Review/customers.sql @@ -0,0 +1,43 @@ +-- MySQL dump 10.13 Distrib 5.5.20, for Win32 (x86) +-- +-- Host: localhost Database: shop +-- ------------------------------------------------------ +-- Server version 5.5.20 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `customers` +-- + +DROP TABLE IF EXISTS `customers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `customers` ( + `c_id` int(11) NOT NULL AUTO_INCREMENT, + `c_name` char(50) NOT NULL, + `c_add` char(50) NOT NULL, + `c_city` char(50) DEFAULT NULL, + `c_zip` char(50) DEFAULT NULL, + `c_contact` char(50) DEFAULT NULL, + `c_email` char(255) DEFAULT NULL, + PRIMARY KEY (`c_id`) +) ENGINE=InnoDB AUTO_INCREMENT=1009 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2016-04-14 17:02:52 diff --git a/JDBC_Review/readme b/JDBC_Review/readme new file mode 100644 index 0000000..9d104ee --- /dev/null +++ b/JDBC_Review/readme @@ -0,0 +1,6 @@ +1.ͻϵͳСĿ +2.dbutils jarʹüԭ--QueryRunnerʹ +3.MVC˼javaеӦ +4.MySQLݿɾIJ +5.JDBCӦӣرգԤ... +6.JdbcUtilsĸд + + ThreadLocal \ No newline at end of file diff --git a/JDBC_Review/src/c3p0-config.xml b/JDBC_Review/src/c3p0-config.xml new file mode 100644 index 0000000..d22e72e --- /dev/null +++ b/JDBC_Review/src/c3p0-config.xml @@ -0,0 +1,28 @@ + + + + + + + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1:3306/test?characterEncode=UTF-8 + root + 123456 + + + 5 + + 10 + + 10 + + 50 + + + 20 + + 5 + + + + \ No newline at end of file diff --git a/JDBC_Review/src/com/cyc/mvcapp/dbutils/QR.java b/JDBC_Review/src/com/cyc/mvcapp/dbutils/QR.java new file mode 100644 index 0000000..9fdb9c1 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/dbutils/QR.java @@ -0,0 +1,105 @@ +package com.cyc.mvcapp.dbutils; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import javax.sql.DataSource; + +/** + * ģdbutils jar + * @author cyc + * + * @param + */ +public class QR { + + private DataSource dataSource; + + public QR() { + + } + + public QR(DataSource dataSource) { + this.dataSource = dataSource; + } + + public int update(String sql, Object...args) { + Connection conn = null; + PreparedStatement psmt = null; + int affected_row = 0; + try { + conn = dataSource.getConnection(); + psmt = conn.prepareStatement(sql); + initParams(psmt, args); + affected_row = psmt.executeUpdate(); + } catch (Exception e) { + // TODO Auto-generated catch block + throw new RuntimeException(e.getMessage(), e); + } finally { + if (psmt != null) { + try { + psmt.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + } + + return affected_row; + } + + private void initParams(PreparedStatement psmt, Object...args) throws SQLException { + for (int i = 0; i < args.length; i++) { + psmt.setObject(i+1, args[i]); + } + } + + public T query(String sql, RsHandler rh, Object...args) { + Connection conn = null; + PreparedStatement psmt = null; + T result = null; + try { + conn = dataSource.getConnection(); + psmt = conn.prepareStatement(sql); + initParams(psmt, args); + ResultSet rs = psmt.executeQuery(); + result = rh.handler(rs); + } catch (Exception e) { + // TODO Auto-generated catch block + throw new RuntimeException(e.getMessage(), e); + } finally { + if (psmt != null) { + try { + psmt.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + } + + return result; + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/dbutils/RsHandler.java b/JDBC_Review/src/com/cyc/mvcapp/dbutils/RsHandler.java new file mode 100644 index 0000000..c3c5063 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/dbutils/RsHandler.java @@ -0,0 +1,12 @@ +package com.cyc.mvcapp.dbutils; + +import java.sql.ResultSet; + +/** + * ѽתҪת + * @author cyc + * @param + */ +public interface RsHandler { + public T handler(ResultSet rs); +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl.java b/JDBC_Review/src/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl.java new file mode 100644 index 0000000..eaf4df1 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/dbutils/impl/CustomerQrImpl.java @@ -0,0 +1,99 @@ +package com.cyc.mvcapp.dbutils.impl; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.Map; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanHandler; +import org.apache.commons.dbutils.handlers.BeanListHandler; +import org.apache.commons.dbutils.handlers.MapHandler; +import org.apache.commons.dbutils.handlers.MapListHandler; +import org.apache.commons.dbutils.handlers.ScalarHandler; +import org.junit.Test; + +import com.cyc.mvcapp.dbutils.QR; +import com.cyc.mvcapp.dbutils.RsHandler; +import com.cyc.mvcapp.entity.Customer; +import com.cyc.mvcapp.utils.JdbcUtils; + +public class CustomerQrImpl { + + public void addCustomer(Customer cs) { + QR qr = new QR<>(JdbcUtils.getDataSource()); + String sql = "INSERT INTO customer(id, name, address, phone) VALUES(null, ?, ?, ?)"; + Object[] args = {cs.getName(), cs.getAddress(), cs.getPhone()}; + + qr.update(sql, args); + } + + public Customer findCustomerById(int id) { + QR qr = new QR<>(JdbcUtils.getDataSource()); + String sql = "SELECT * FROM Customer WHERE id = ?"; + Customer cs = null; + RsHandler rh = new RsHandler() { + + @Override + public Customer handler(ResultSet rs) { + // TODO Auto-generated method stub + Customer customer = null; + try { + if (rs.next()) { + customer = new Customer(); + customer.setName(rs.getString("name")); + customer.setAddress(rs.getString("address")); + customer.setPhone(rs.getString("phone")); + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return customer; + } + }; + cs = qr.query(sql, rh, id); + return cs; + } + + @Test + public void test() throws SQLException { + /*Customer cs = new Customer(); + cs.setAddress(""); + cs.setName("Kark"); + cs.setPhone("18159876543"); + + addCustomer(cs);*/ + + /*Customer cs = findCustomerById(1); + System.out.println(cs.getName());*/ + + QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); + /*String sql = "SELECT * FROM customer WHERE id = ?"; + Object param = 1; + //javabeanڵԱͱֶһ + Customer cs = qr.query(sql, new BeanHandler<>(Customer.class), param); + System.out.println(cs.getName());*/ + + /*String sql = "SELECT * FROM customer"; + List list = qr.query(sql, new BeanListHandler(Customer.class)); + System.out.println(list);*/ + + /*String sql = "SELECT * FROM customer WHERE id = ?"; + Object param = 1; + Map map = qr.query(sql, new MapHandler(), param); + System.out.println(map);*/ + + /*String sql = "SELECT * FROM customer"; + List> list = qr.query(sql, new MapListHandler()); + System.out.println(list);*/ + /** + * Integer,Long,BigInteger + * ΪͬݿͲͬ + */ + String sql = "SELECT COUNT(*) FROM customer"; + Number object = (Number)qr.query(sql, new ScalarHandler<>()); + int c = object.intValue(); + System.out.println(c); + } +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/entity/Customer.java b/JDBC_Review/src/com/cyc/mvcapp/entity/Customer.java new file mode 100644 index 0000000..6ef1ff7 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/entity/Customer.java @@ -0,0 +1,59 @@ +package com.cyc.mvcapp.entity; + +public class Customer { + + private Integer id; + private String name; + private String address; + private String phone; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public Customer() { + // TODO Auto-generated constructor stub + } + + public Customer(Integer id, String name, String address, String phone) { + super(); + this.id = id; + this.name = name; + this.address = address; + this.phone = phone; + } + + @Override + public String toString() { + return "Customer [id=" + id + ", name=" + name + ", address=" + address + ", phone=" + phone + "]"; + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/testdao/AccountDao.java b/JDBC_Review/src/com/cyc/mvcapp/testdao/AccountDao.java new file mode 100644 index 0000000..5fb4b5c --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/testdao/AccountDao.java @@ -0,0 +1,24 @@ +package com.cyc.mvcapp.testdao; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.apache.commons.dbutils.QueryRunner; +import com.cyc.mvcapp.utils.JdbcUtils; + +public class AccountDao { + public int update(String name, double money) throws SQLException { + QueryRunner qr = new QueryRunner(); + String sql = "UPDATE account SET balance = balance + ? WHERE name like ?"; + Object[] params = {money, name}; + + Connection conn = JdbcUtils.getConnection(); + System.out.println(conn); + + int affected_row = qr.update(conn, sql, params); + JdbcUtils.releaseConnection(conn); + + return affected_row; + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/testdao/AccountDao1.java b/JDBC_Review/src/com/cyc/mvcapp/testdao/AccountDao1.java new file mode 100644 index 0000000..a2498cb --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/testdao/AccountDao1.java @@ -0,0 +1,19 @@ +package com.cyc.mvcapp.testdao; + +import java.sql.SQLException; + +import org.apache.commons.dbutils.QueryRunner; +import com.cyc.mvcapp.utils.TxQueryRunner; + +public class AccountDao1 { + public int update(String name, double money) throws SQLException { + QueryRunner qr = new TxQueryRunner(); + String sql = "UPDATE account SET balance = balance + ? WHERE name like ?"; + Object[] params = {money, name}; + + int affected_row = qr.update(sql, params); + + return affected_row; + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/testdemo/TestDemo.java b/JDBC_Review/src/com/cyc/mvcapp/testdemo/TestDemo.java new file mode 100644 index 0000000..0f27a5a --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/testdemo/TestDemo.java @@ -0,0 +1,36 @@ +package com.cyc.mvcapp.testdemo; + +import java.lang.reflect.Method; +import java.sql.SQLException; + +import org.junit.Test; + +import com.cyc.mvcapp.testdao.AccountDao1; +import com.cyc.mvcapp.utils.JdbcUtils; + +public class TestDemo { + private AccountDao1 dao = new AccountDao1(); + + @Test + public void serviceMethod() throws Exception { + + try { + JdbcUtils.beginTransaction(); + dao.update("yi", -1); + if (true) { + throw new RuntimeException(); + } + dao.update("jia", 1); + JdbcUtils.commitTransaction(); + } catch (Exception e) { + try { + JdbcUtils.rollbackTransaction(); + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + throw e; + } + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/testdemo/TestDemo1.java b/JDBC_Review/src/com/cyc/mvcapp/testdemo/TestDemo1.java new file mode 100644 index 0000000..2645b98 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/testdemo/TestDemo1.java @@ -0,0 +1,30 @@ +package com.cyc.mvcapp.testdemo; + +import java.sql.SQLException; + +import org.junit.Test; + +import com.cyc.mvcapp.testdao.AccountDao; +import com.cyc.mvcapp.utils.JdbcUtils; + +public class TestDemo1 { + private AccountDao dao = new AccountDao(); + + @Test + public void serviceMethod() { + + try { + JdbcUtils.beginTransaction(); + dao.update("yi", -1); + dao.update("jia", 1); + JdbcUtils.commitTransaction(); + } catch (Exception e) { + try { + JdbcUtils.rollbackTransaction(); + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + } +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/utils/DBUtils.java b/JDBC_Review/src/com/cyc/mvcapp/utils/DBUtils.java new file mode 100644 index 0000000..8007b5b --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/utils/DBUtils.java @@ -0,0 +1,48 @@ +package com.cyc.mvcapp.utils; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class DBUtils { + + /** + * ͷ + * @param connection + */ + public static void releaseConnection(Connection connection){ + if(connection!=null){ + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + + private static ComboPooledDataSource dataSource=null; + + static{ + //ֻһ + dataSource=new ComboPooledDataSource("mvcapp"); // myc3p0 һҪļеһ + } + + /** + * ԴһConnection + * @return + * @throws Exception + */ + public static Connection getConnection() { + try { + return dataSource.getConnection(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} \ No newline at end of file diff --git a/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils.java b/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils.java new file mode 100644 index 0000000..7c58908 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils.java @@ -0,0 +1,121 @@ +package com.cyc.mvcapp.utils; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import javax.sql.DataSource; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class JdbcUtils { + + private static DataSource ds = null; + + //ר +// private static Connection conn = null; + private static ThreadLocal tl = new ThreadLocal<>();//Ϊӹconnڶ̻߳»ᵼ쳣 + + static { + ds = new ComboPooledDataSource("mvcapp"); + } + + public static Connection getConnection() throws SQLException { + Connection conn = tl.get();//ȡǰ̵߳ר + if (conn != null) { + return conn;//˿˵ѾbeginTransaction + } + +/* Connection conn = null; + try { + conn = ds.getConnection(); + } catch (SQLException e) { + // TODO Auto-generated catch block + throw new RuntimeException(); + }*/ + + return ds.getConnection(); + } + + public static DataSource getDataSource() { + return ds; + } + + public static void beginTransaction() throws SQLException { + Connection conn = tl.get(); + if (conn != null) { + throw new SQLException("Ѿ벻Ҫظ"); + } + conn = getConnection();//connֵʾѾʼ + conn.setAutoCommit(false); + tl.set(conn);//ѵǰӱ + } + + public static void commitTransaction() throws SQLException { + Connection conn = tl.get(); + if (conn == null) { + throw new SQLException("ûпʼύ"); + } + conn.commit(); + conn.close(); +// conn = null;//ʾѾ´εgetConnectionͲconn + tl.remove(); + + } + + public static void rollbackTransaction() throws SQLException { + Connection conn = tl.get(); + if (conn == null) { + throw new SQLException("ûпܻع"); + } + conn.rollback(); + conn.close(); +// conn = null; + tl.remove(); + } + + public static void releaseConnection(Connection connection) throws SQLException { + Connection conn = tl.get(); + //鿴Ƿרõ + //conn==nul˵˿ûôconnectionרõ + if (conn == null) { + connection.close(); + } + + //רӺͲӲȣ˵Ӳר + if (conn != connection) { + connection.close(); + } + } + + public static void releaseResource(ResultSet rs, Statement stmt, Connection conn) { + try { + if (rs != null) { + rs.close(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } finally { + // TODO: handle finally clause + try { + if (stmt != null) { + stmt.close(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } finally { + // TODO: handle finally clause + try { + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils1.java b/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils1.java new file mode 100644 index 0000000..d10319e --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils1.java @@ -0,0 +1,67 @@ +package com.cyc.mvcapp.utils; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import javax.sql.DataSource; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class JdbcUtils1 { + + private static DataSource ds = null; + + static { + ds = new ComboPooledDataSource("mvcapp"); + } + + public static Connection getConnection() { + + Connection conn = null; + + try { + conn = ds.getConnection(); + } catch (SQLException e) { + // TODO Auto-generated catch block + throw new RuntimeException(); + } + + return conn; + } + + public static DataSource getDataSource() { + return ds; + } + + public static void releaseResource(ResultSet rs, Statement stmt, Connection conn) { + try { + if (rs != null) { + rs.close(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } finally { + // TODO: handle finally clause + try { + if (stmt != null) { + stmt.close(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } finally { + // TODO: handle finally clause + try { + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils2.java b/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils2.java new file mode 100644 index 0000000..698e7c6 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/utils/JdbcUtils2.java @@ -0,0 +1,112 @@ +package com.cyc.mvcapp.utils; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import javax.sql.DataSource; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class JdbcUtils2 { + + private static DataSource ds = null; + + //ר + private static Connection conn = null; + + static { + ds = new ComboPooledDataSource("mvcapp"); + } + + public static Connection getConnection() throws SQLException { + + if (conn != null) { + return conn;//˿˵ѾbeginTransaction + } + +/* Connection conn = null; + try { + conn = ds.getConnection(); + } catch (SQLException e) { + // TODO Auto-generated catch block + throw new RuntimeException(); + }*/ + + return ds.getConnection(); + } + + public static DataSource getDataSource() { + return ds; + } + + public static void beginTransaction() throws SQLException { + if (conn != null) { + throw new SQLException("Ѿ벻Ҫظ"); + } + conn = getConnection();//connֵʾѾʼ + conn.setAutoCommit(false); + } + + public static void commitTransaction() throws SQLException { + if (conn == null) { + throw new SQLException("ûпʼύ"); + } + conn.commit(); + conn.close(); + conn = null;//ʾѾ´εgetConnectionͲconn + } + + public static void rollbackTransaction() throws SQLException { + if (conn == null) { + throw new SQLException("ûпܻع"); + } + conn.rollback(); + conn.close(); + conn = null; + } + + public static void releaseConnection(Connection connection) throws SQLException { + //鿴Ƿרõ + //conn==nul˵˿ûôconnectionרõ + if (conn == null) { + connection.close(); + } + + //רӺͲӲȣ˵Ӳר + if (conn != connection) { + connection.close(); + } + } + + public static void releaseResource(ResultSet rs, Statement stmt, Connection conn) { + try { + if (rs != null) { + rs.close(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } finally { + // TODO: handle finally clause + try { + if (stmt != null) { + stmt.close(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } finally { + // TODO: handle finally clause + try { + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + +} diff --git a/JDBC_Review/src/com/cyc/mvcapp/utils/TxQueryRunner.java b/JDBC_Review/src/com/cyc/mvcapp/utils/TxQueryRunner.java new file mode 100644 index 0000000..c3e65b3 --- /dev/null +++ b/JDBC_Review/src/com/cyc/mvcapp/utils/TxQueryRunner.java @@ -0,0 +1,181 @@ +package com.cyc.mvcapp.utils; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.ResultSetHandler; + +/** + * дconnectionķ + * еķԼӵ⣬Ӵ + * õJdbcUtils.getConnection(),ӣͨ + * JdbcUtils.releaseConnection(),ͨӣر + * @author cyc + * + */ +public class TxQueryRunner extends QueryRunner { + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#batch(java.lang.String, java.lang.Object[][]) + */ + @Override + public int[] batch(String sql, Object[][] params) throws SQLException { + /** + * 1.ȡ + * 2.ø෽ + * 3.ͷ + */ + + Connection conn = JdbcUtils.getConnection(); + int[] result = super.batch(conn, sql, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#execute(java.lang.String, java.lang.Object[]) + */ + @Override + public int execute(String sql, Object... params) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + int result = super.execute(conn, sql, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#execute(java.lang.String, org.apache.commons.dbutils.ResultSetHandler, java.lang.Object[]) + */ + @Override + public List execute(String sql, ResultSetHandler rsh, Object... params) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + List result = super.execute(conn, sql, rsh, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#insert(java.lang.String, org.apache.commons.dbutils.ResultSetHandler, java.lang.Object[]) + */ + @Override + public T insert(String sql, ResultSetHandler rsh, Object... params) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.insert(conn, sql, rsh, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#insert(java.lang.String, org.apache.commons.dbutils.ResultSetHandler) + */ + @Override + public T insert(String sql, ResultSetHandler rsh) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.insert(conn, sql, rsh); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#insertBatch(java.lang.String, org.apache.commons.dbutils.ResultSetHandler, java.lang.Object[][]) + */ + @Override + public T insertBatch(String sql, ResultSetHandler rsh, Object[][] params) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.insertBatch(conn, sql, rsh, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, java.lang.Object, org.apache.commons.dbutils.ResultSetHandler) + */ + @Override + public T query(String sql, Object param, ResultSetHandler rsh) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.query(conn, sql, param, rsh); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, java.lang.Object[], org.apache.commons.dbutils.ResultSetHandler) + */ + @Override + public T query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.query(conn, sql, params, rsh); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, org.apache.commons.dbutils.ResultSetHandler, java.lang.Object[]) + */ + @Override + public T query(String sql, ResultSetHandler rsh, Object... params) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.query(conn, sql, rsh, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, org.apache.commons.dbutils.ResultSetHandler) + */ + @Override + public T query(String sql, ResultSetHandler rsh) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + T result = super.query(conn, sql, rsh); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String, java.lang.Object[]) + */ + @Override + public int update(String sql, Object... params) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + int result = super.update(conn, sql, params); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String, java.lang.Object) + */ + @Override + public int update(String sql, Object param) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + int result = super.update(conn, sql, param); + JdbcUtils.releaseConnection(conn); + return result; + } + + /* (non-Javadoc) + * @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String) + */ + @Override + public int update(String sql) throws SQLException { + // TODO Auto-generated method stub + Connection conn = JdbcUtils.getConnection(); + int result = super.update(conn, sql); + JdbcUtils.releaseConnection(conn); + return result; + } + +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..05414bf --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Java +Java Project Or Small Demo Or Java Knowledge Or Java Application + + +1.jdbc原理及其应用 +2.jdbc连接数据库,连接的关闭,创建语句,获取结果集,保存结果集。 +3.对事件的增删改查,处理事务(略过),存储过程(略过) +4.模板设计模式和策略设计模式,装饰者设计模式,工厂设计模式 +5.数据源(连接池)的模拟,及DBCP数据源(连接池)的使用