最近这段时间一直在用SSM框架做增删改查,突然想把以前还不会用框架的时候,综合百度和各种资料结合API文档抄袭而来的数据层的封装分享给大家。这边先封装一个DButil。

我这个封装就是烂大街的那种,没什么特别。

  1. //DButil.java

    package com.yck.database;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.sql.*;
  6. import java.util.Properties;
  7.  
  8. public class DButil
  9. {
  10. private static String username;
  11. private static String password;
  12. private static String url;
  13. private static String driver;
  14. static
  15. {
  16. getDatabaseInfo("jdbc.properties");
  17. try
  18. {
  19. Class.forName(driver);
  20. } catch (ClassNotFoundException e)
  21. {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. }
  25. }
  26.  
  27. public static void getDatabaseInfo(String path)
  28. {
  29. InputStream in = DButil.class.getClassLoader().getResourceAsStream(path);
  30. Properties p = new Properties();
  31. try
  32. {
  33. p.load(in);
  34. username = p.getProperty("jdbc.username");
  35. password = p.getProperty("jdbc.password");
  36. url = p.getProperty("jdbc.url");
  37. driver = p.getProperty("jdbc.driver");
  38. } catch (IOException e)
  39. {
  40. e.printStackTrace();
  41. }
  42. }
  43.  
  44. public static Connection getConnection()
  45. {
  46. Connection conn = null;
  47. try
  48. {
  49. conn = DriverManager.getConnection(url,username,password);
  50. }catch (SQLException e)
  51. {
  52. e.printStackTrace();
  53. }
  54. return conn;
  55. }
  56. public static void closeConnection(Connection connection)
  57. {
  58. try
  59. {
  60. if(connection != null)
  61. {
  62. connection.close();
  63. connection = null;
  64. }
  65. } catch (SQLException e)
  66. {
  67. e.printStackTrace();
  68. }
  69. }
  70.  
  71. public static PreparedStatement prepareStatement(Connection connection,String sql)
  72. {
  73. PreparedStatement preparedStatement = null;
  74. try
  75. {
  76. preparedStatement = connection.prepareStatement(sql);
  77. } catch (SQLException e)
  78. {
  79. e.printStackTrace();
  80. }
  81. return preparedStatement;
  82. }
  83. public static void closePreparedStatement(PreparedStatement preparedStatement)
  84. {
  85. try
  86. {
  87. if(preparedStatement != null)
  88. {
  89. preparedStatement.close();
  90. preparedStatement = null;
  91. }
  92. } catch (SQLException e)
  93. {
  94. e.printStackTrace();
  95. }
  96. }
  97.  
  98. public static Statement createStatement(Connection connection)
  99. {
  100. Statement statement = null;
  101. try
  102. {
  103. statement = connection.createStatement();
  104. } catch (SQLException e)
  105. {
  106. e.printStackTrace();
  107. }
  108. return statement;
  109. }
  110. public static void closeStatement(Statement statement)
  111. {
  112. try
  113. {
  114. if(statement != null)
  115. {
  116. statement.close();
  117. statement = null;
  118. }
  119. } catch (SQLException e)
  120. {
  121. e.printStackTrace();
  122. }
  123. }
  124. public static ResultSet getResultSet(Statement statement,String sql)
  125. {
  126. ResultSet resultSet = null;
  127. try
  128. {
  129. resultSet = statement.executeQuery(sql);
  130. } catch (SQLException e)
  131. {
  132. e.printStackTrace();
  133. }
  134. return resultSet;
  135. }
  136. public static void closeResultSet(ResultSet resultSet)
  137. {
  138. try
  139. {
  140. if(resultSet != null)
  141. {
  142. resultSet.close();
  143. resultSet = null;
  144. }
  145. } catch (SQLException e)
  146. {
  147. e.printStackTrace();
  148. }
  149. }
  150.  
  151. }

这里是数据库连接需要的jdbc.properties,我们是通过DButil类的读取properties文件的办法来将DButil实例化的。

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=true
  3. jdbc.username=root
  4. jdbc.password=8888888

数据库写了个很简单的来测试

  1. CREATE DATABASE test;
  2. USE test;
  3.  
  4. CREATE TABLE t_user
  5. (
  6. id INT AUTO_INCREMENT NOT NULL,
  7. name ),
  8. age INT,
  9. PRIMARY KEY(id)
  10. )ENGINE=InnoDB DEFAULT CHARSET=utf8

手动插了两条数据,数据库的内容如下

下面我们来测试一下,新建一个Test类

  1. package com.yck.database;
  2.  
  3. import java.sql.*;
  4.  
  5. public class Test
  6. {
  7.  
  8. public static void main(String[] args)
  9. {
  10. Connection conn = DButil.getConnection();
  11. Statement stam =DButil.createStatement(conn);
  12. String sql = "select * from t_user";
  13. ResultSet rs = null;
  14. try
  15. {
  16. rs = stam.executeQuery(sql);
  17. while(rs.next())
  18. {
  19. System.out.println(rs.getString("name"));
  20. }
  21.  
  22. } catch (SQLException e)
  23. {
  24. // TODO Auto-generated catch block
  25. e.printStackTrace();
  26. }
  27.  
  28. DButil.closeResultSet(rs);
  29. DButil.closeStatement(stam);
  30. DButil.closeResultSet(rs);
  31. }
  32.  
  33. }

运行结果如下,说明我们封装的数据库是能够连接上的

手把手封装数据层之DButil数据库连接的封装的更多相关文章

  1. 手把手封装数据层之DataUtil数据库操作的封装

    上一篇我们写完了数据库连接的封装 没有看的请移步上一篇关于数据库连接的内容 这次我们讲数据库操作的封装.数据库的操作就是增删改查:心再大一点就可以直接分为查询和其他. 因为查询是有返回对象的,而其他都 ...

  2. 瞎j8封装第二版之数据层的封装

    看了以前写的代码,对就是下面这个 手把手封装数据层之DataUtil数据库操作的封装 觉得以前写的代码好烂啊!!!,重新理了一下思路,写得更规范和简练,应该效率也会高很多,用了一下下午写的连接池(半废 ...

  3. 【类库】私房干货.Net数据层方法的封装

    [类库]私房干货.Net数据层方法的封装 作者:白宁超 时间:2016年3月5日22:51:47 摘要:继上篇<Oracle手边常用70则脚本知识汇总>文章的发表,引起很多朋友关注.便促使 ...

  4. angular开发中对请求数据层的封装

    代码地址如下:http://www.demodashi.com/demo/11481.html 一.本章节仅仅是对angular4项目开发中数据请求封装到model中 仅仅是在项目angular4项目 ...

  5. 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  6. Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介

    日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...

  7. Spring Boot 系列(九)数据层-集成Spring-data-jpa

    实际开发中,不可避免地会对数据进行反复的增删改查操作,然而这部分工作是十分繁琐枯燥的.那么,随即而生的ORM框架就能很好的解决这个问题. 我们常用的ORM框架有:Hibernate.Mybatis.J ...

  8. 数据层的多租户浅谈(SAAS多租户数据库设计)

    在上一篇“浅析多租户在 Java 平台和某些 PaaS 上的实现”中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户 ...

  9. JAVA 利用反射自定义数据层框架

    之前的随笔一直都在介绍c#,主要公司最近的业务都是做桌面程序,那么目前c#中的WPF肯定是我做桌面程序的不二之选,做了半年的WPF,也基本摸清了c#写代码的套路和规则(本人之前是两年多的JAVA开发者 ...

随机推荐

  1. Spring Boot 使用Redis缓存

    本文示例源码,请看这里 Spring Cache的官方文档,请看这里 缓存存储 Spring 提供了很多缓存管理器,例如: SimpleCacheManager EhCacheCacheManager ...

  2. (转)Java compiler level does not match解决方法

    背景:工作中导入以前的项目,导出报Java compiler level does not match the versionof the installed Java project facet. ...

  3. 如何快速查看github代码库中第一次commit的记录

    发现一个别人推荐的代码库用来学习源码, star星还不少,别人推荐从第一次commit开始阅读,于是试着去找commits的第一次 问题来了,这个代码库commits7855次,点击进入commits ...

  4. 用u盘启动计算机

    上次只是做好了u盘启动盘,但是并没有说怎么安装系统.接下来说一下怎么装系统.链接:怎么把系统装进u盘(ultraiso) 电脑经常要用到u盘启动.设置u盘启动在bios设置里面进行设置.下面就来讲解一 ...

  5. amd和cmd区别

    作者:玉伯 链接:https://www.zhihu.com/question/20351507/answer/14859415 来源:知乎 著作权归作者所有,转载请联系作者获得授权. AMD 是 R ...

  6. AdPlayBanner:功能丰富、一键式使用的图片轮播插件

    AdPlayBanner:功能丰富.一键式使用的图片轮播插件 AdPlayBanner是一个Android平台基于ViewPager实现的轮播图插件,主要用以自动或者手动地播放轮播图,提供了Fresc ...

  7. git版本控制 for window安装和命令行使用

    Git 安装配置 Windows 平台上安装 在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行 ...

  8. hdu--5351--MZL's Border

    表示看这篇博客后找到了思路: http://blog.csdn.net/queuelovestack/article/details/47291195 补充一下数据,方便观察规律 m  LBorder ...

  9. Boyer-Moore Majority Vote Algorithm

    介绍算法之前, 我们来看一个场景, 假设您有一个未排序的列表.您想知道列表中是否存在一个数量占列表的总数一半以上的元素, 我们称这样一个列表元素为 Majority 元素.如果有这样一个元素, 求出它 ...

  10. js判断移动终端(手机浏览器)

    方法1: <script type="text/javascript">         var browser = {             versions: f ...