这是目录结构:

其中后面三个类都是第一个类的子类,第一个类是父类。

JdbcUtils:

  1. package com.smt.db;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.sql.CallableStatement;
  6. import java.sql.Connection;
  7. import java.sql.DriverManager;
  8. import java.sql.PreparedStatement;
  9. import java.sql.ResultSet;
  10. import java.sql.ResultSetMetaData;
  11. import java.sql.SQLException;
  12. import java.sql.Statement;
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.Properties;
  18.  
  19. import com.alibaba.druid.pool.DruidDataSource;
  20.  
  21. public class JdbcUtils {
  22. // 定义变量
  23. private Connection ct = null;
  24. // 大多数情况下用preparedstatement替代statement
  25. private PreparedStatement ps = null;
  26. private ResultSet rs = null;
  27.  
  28. // 连接数据库的参数
  29. protected String url = "";
  30. protected String username = "";
  31. protected String driver = "";
  32. protected String passwd = "";
  33.  
  34. private CallableStatement cs = null;
  35. protected DruidDataSource dataSource = new DruidDataSource();
  36.  
  37. public CallableStatement getCs() {
  38. return cs;
  39. }
  40.  
  41. // 得到连接
  42. public void getConnection() {
  43. try {
  44. ct = dataSource.getConnection();
  45. ct.setAutoCommit(true);
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. }
  49. }
  50.  
  51. public void closeConnection(){
  52. try {
  53. ct.close();
  54. } catch (SQLException e) {
  55. // TODO Auto-generated catch block
  56. e.printStackTrace();
  57. }
  58. }
  59.  
  60. public void BeginTran(){
  61. try {
  62. ct = dataSource.getConnection();
  63. ct.setAutoCommit(false);
  64. } catch (Exception e) {
  65. e.printStackTrace();
  66. }
  67. }
  68.  
  69. public void CommitTran() throws SQLException{
  70. ct.commit();
  71. ct.close();
  72. }
  73.  
  74. public void RollBackTran(){
  75. try {
  76. ct.rollback();
  77. } catch (SQLException e) {
  78. // TODO Auto-generated catch block
  79. e.printStackTrace();
  80. }finally{
  81. try {
  82. ct.close();
  83. } catch (SQLException e) {
  84. // TODO Auto-generated catch block
  85. e.printStackTrace();
  86. }
  87. }
  88. }
  89.  
  90. public List<Map> executeQuery(String sql, String[] parameters) {
  91. List<Map> list = new ArrayList<Map>();
  92. try {
  93. ps = ct.prepareStatement(sql);
  94. if (parameters != null) {
  95. for (int i = 0; i < parameters.length; i++) {
  96. ps.setString(i + 1, parameters[i]);
  97. }
  98. }
  99. rs = ps.executeQuery();
  100.  
  101. List<Map> heads = new ArrayList<Map>();
  102. ResultSetMetaData rsmd = rs.getMetaData();// rs为查询结果集
  103. int count = rsmd.getColumnCount();
  104. for (int i = 1; i <= count; i++) {
  105. Map meta = new HashMap();
  106. meta.put("colName", rsmd.getColumnName(i));
  107. meta.put("dataType", rsmd.getColumnTypeName(i));
  108. heads.add(meta);// 把列名存入向量heads中
  109. }
  110.  
  111. while (rs.next()) {
  112. Map map = new HashMap();
  113. for (Map col : heads) {
  114. switch (col.get("dataType").toString()) {
  115. case "VARCHAR":
  116. map.put(col.get("colName").toString().toLowerCase(),
  117. rs.getString(col.get("colName").toString()));
  118. break;
  119. case "BIGINT":
  120. map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
  121. break;
  122. case "SMALLINT":
  123. map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
  124. break;
  125. case "INTEGER":
  126. map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
  127. break;
  128. case "BIGDECIMAL":
  129. map.put(col.get("colName").toString().toLowerCase(),
  130. rs.getBigDecimal(col.get("colName").toString()));
  131. break;
  132. case "DECIMAL":
  133. map.put(col.get("colName").toString().toLowerCase(),
  134. rs.getBigDecimal(col.get("colName").toString()));
  135. break;
  136. case "DATE":
  137. map.put(col.get("colName").toString().toLowerCase(),
  138. rs.getString(col.get("colName").toString()));
  139. break;
  140. case "DATETIME":
  141. map.put(col.get("colName").toString().toLowerCase(),
  142. rs.getString(col.get("colName").toString()));
  143. break;
  144. default:
  145. break;
  146. }
  147. }
  148. list.add(map);
  149. }
  150. } catch (Exception e) {
  151. e.printStackTrace();
  152. throw new RuntimeException(e.getMessage());
  153. } finally {
  154. close(rs, ps);
  155. }
  156. return list;
  157. }
  158.  
  159. // 先写一个update、delete、insert
  160. // sql格式:update 表名 set 字段名 =?where 字段=?
  161. // parameter神应该是(”abc“,23)
  162. public void executeUpdate(String sql, String[] parameters) {
  163. try {
  164. ps = ct.prepareStatement(sql);
  165. if (parameters != null) {
  166. for (int i = 0; i < parameters.length; i++) {
  167. ps.setString(i + 1, parameters[i]);
  168. }
  169.  
  170. }
  171. ps.executeUpdate();
  172. } catch (Exception e) {
  173. e.printStackTrace();// 开发阶段
  174. // 抛出异常
  175. // 可以处理,也可以不处理
  176. throw new RuntimeException(e.getMessage());
  177. } finally {
  178. close(rs, ps);
  179. }
  180. }
  181.  
  182. public void close(ResultSet rs, Statement ps) {
  183. // 关闭资源(先开后关)
  184. if (rs != null) {
  185. try {
  186. rs.close();
  187. } catch (SQLException e) {
  188. e.printStackTrace();
  189. }
  190. rs = null;
  191. }
  192. if (ps != null) {
  193. try {
  194. ps.close();
  195. } catch (SQLException e) {
  196. e.printStackTrace();
  197. }
  198. ps = null;
  199. }
  200. }
  201. }

LocalHelper:

  1. package com.smt.db;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.sql.CallableStatement;
  6. import java.sql.Connection;
  7. import java.sql.DriverManager;
  8. import java.sql.PreparedStatement;
  9. import java.sql.ResultSet;
  10. import java.sql.SQLException;
  11. import java.sql.Statement;
  12. import java.util.Properties;
  13.  
  14. public class LocalHelper extends JdbcUtils {
  15.  
  16. private static Properties pp = null;
  17. private InputStream fis = null;
  18.  
  19. public LocalHelper(){
  20. super();
  21. pp = new Properties();
  22. fis=OggHelper.class.getClassLoader().getResourceAsStream("local.properties");
  23. //fis = new FileInputStream();
  24. try {
  25. pp.load(fis);
  26. } catch (IOException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. }
  30. url = pp.getProperty("dbUrl");
  31. driver = pp.getProperty("dbDriver");
  32. username = pp.getProperty("dbUserName");
  33. passwd = pp.getProperty("dbPassword");
  34.  
  35. dataSource.setDriverClassName(driver);
  36. dataSource.setUrl(url);
  37. dataSource.setUsername(username);
  38. dataSource.setPassword(passwd);
  39. }
  40. }

local.properties:

  1. #application configs
  2. #jdbc c3p0 config
  3. dbDriver=com.mysql.jdbc.Driver
  4. dbUrl = jdbc:mysql://localhost:3306/shbi?characterEncoding=utf8
  5. dbUserName = root
  6. dbPassword = root

我的JdbcUtils类的更多相关文章

  1. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  2. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  3. 自定义的jdbc连接工具类JDBCUtils【java 工具类】

    JDBCUtils 类设计: 1. 创建私有的属性*(连接数据库必要的四个变量):dreiver url user password 2. 将构造函数私有化 3.将注册驱动写入静态代码块 4.外界只能 ...

  4. JDBCUtils工具类

    JdbcUtils.java import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource ...

  5. 基于durid的JDBCUtils工具类

    1.JDBCUtils类 package com.alphajuns.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; impo ...

  6. Javaweb学习笔记——(十七)——————JDBC的原理、四大核心类、四大参数、预编译、Dao模式、批处理、大数据、时间类型的转换

    JDBC入门 *导入jar包:驱动 *加载驱动类:Class.forName("类名"); *给出url.username.password,其中url背下来 *使用DriverM ...

  7. day17(JDBC入门&jdbcUtils工具介绍)

    day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...

  8. JdbcUtils 小工具

    // 第一版 // src 目录下 dbconfig.properties 配置文件, 用来配置四大参数 // 注意 properties 配置文件中没有分号结尾, 也没有引号 driverClass ...

  9. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

随机推荐

  1. HeadFirstJava

    java执行过程的来龙去脉 源代码——编译器——输出——java虚拟机 扩展名为.java ——扩展名为.class 不要直接用类名点变量来改变属性值,一般都用get.set方法.封装的基本原则:将你 ...

  2. Memcached 扩展常用方法

    保存数据 向memcached保存数据的方法有 add replace set 它们的使用方法都相同: $add = $memcached->add( '键', '值', '期限' ); $re ...

  3. es6 规范 的 具体用法 -- 待续

    链接 1. const 表示不会被重新赋值的,  包括了不会被修改的, const 可以被修改, 但是不会被整体覆盖 由于是静态分析, const  相对 let 执行效率 更高 2. 模板字符串   ...

  4. java.c++.c#.c的区别

    C++则一般看作是对C语言的扩展. Java语言是一种完全的面向对象语言,虽然它的底层(运行时库)是用C语言开发的,可是并不依赖于C. C#是微软开发的一种编程语言,语法类似Java,几乎就是从Jav ...

  5. UI基础:UI中类的继承关系图,最基本的视图分析

    首先,UI中常用的UIwindow.UILabel.UIButton.UITextField属于UIView的子类.UITextField和UILabel和UIwindow自身没有初始化方法,需要使用 ...

  6. Texas Instruments matrix-gui-2.0 hacking -- submenu.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  7. OLED的相关信息

    有2种方式与OLED模块相连接,一种是8080的并口方式,另一种是4线SPI方式. ALIENTEK OLED 模块的 8080 接口方式需要如下一些信号线:CS: OLED 片选信号.WR:向 OL ...

  8. HUD 1969:Pie(二分)

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  9. Windows10中启用原来的Windows照片查看器方法

    前言: ============================================== Windows10 版系统自带很多垃圾应用,图片查看器弄得很不好用,还是习惯Windows7的,自 ...

  10. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger

    本篇是在上一篇的基础上添加日志功能,并记录NLog在Asp.Net Core里的使用方法. 第一部分:默认Logger支持 一.project.json添加日志包引用,并在cmd窗口使用 dotnet ...