原文地址:https://www.cnblogs.com/FCWORLD/p/3401622.html

最近突然想到在上家公司封装的Mysql工具类没有保存一份,感觉比较可惜,在网上找了一下,找到一个不错的Mysql工具类封装,在这里记录一下,便于日后查阅。

1、数据库连接层MYSQL

/*** 数据库连接层MYSQL* @author Administrator**/
public class DBConnection {/*** 连接数据库* @return*/public static Connection getDBConnection(){// 1. 注册驱动try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 获取数据库的连接try {Connection conn  = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=utf-8", "root", "root");return conn;} catch (SQLException e1) {e1.printStackTrace();}return null;}}

2、数据层封装

/*** MYSQL数据库底层封装* @author Administrator**/
public class DBManager {private PreparedStatement pstmt;private Connection conn;private ResultSet rs;/*** 打开数据库*/public DBManager() {conn = DBConnection.getDBConnection();}/*** 执行修改添加操作* @param coulmn* @param type* @param sql* @return* @throws SQLException*/public  boolean updateOrAdd(String[] coulmn, int[] type, String sql) throws SQLException{if(!setPstmtParam(coulmn, type, sql))return false;boolean flag = pstmt.executeUpdate()>0?true:false;closeDB();return flag;}/*** 获取查询结果集* @param coulmn* @param type* @param sql* @throws SQLException*/public DataTable getResultData(String[] coulmn, int[] type, String sql) throws SQLException{DataTable dt = new DataTable();ArrayList<HashMap<String, String>>list = new ArrayList<HashMap<String, String>>();if(!setPstmtParam(coulmn, type, sql))return null;rs = pstmt.executeQuery();ResultSetMetaData rsmd = rs.getMetaData();//取数据库的列名 int numberOfColumns = rsmd.getColumnCount();while(rs.next()){HashMap<String, String> rsTree = new HashMap<String, String>(); for(int r=1;r<numberOfColumns+1;r++){rsTree.put(rsmd.getColumnName(r),rs.getObject(r).toString());}list.add(rsTree);}closeDB();dt.setDataTable(list);return dt;}/*** 参数设置* @param coulmn* @param type* @throws SQLException * @throws NumberFormatException */private boolean setPstmtParam(String[] coulmn, int[] type, String sql) throws NumberFormatException, SQLException{if(sql== null) return false;pstmt = conn.prepareStatement(sql);if(coulmn != null && type != null && coulmn.length !=0 && type.length !=0   ){        for (int i = 0; i<type.length; i++) {switch (type[i]) {case Types.INTEGER:pstmt.setInt(i+1, Integer.parseInt(coulmn[i]));break;case Types.BOOLEAN:pstmt.setBoolean(i+1, Boolean.parseBoolean(coulmn[i]));break;case Types.CHAR:pstmt.setString(i+1, coulmn[i]);break;case Types.DOUBLE:pstmt.setDouble(i+1, Double.parseDouble(coulmn[i]));break;case Types.FLOAT:pstmt.setFloat(i+1, Float.parseFloat(coulmn[i]));break;default:break;}}}return true;}/*** 关闭数据库* @throws SQLException*/private void closeDB() throws SQLException{if(rs != null){rs.close();}if(pstmt != null){pstmt.close();}if(conn != null){conn.close();}}
}

3、数据集封装

/*** 数据集封装* @author Administrator*/
public class DataTable {public String[] column;//列字段public String[][] row; //行值public int rowCount = 0;//行数public int colCoun = 0;//列数public DataTable() {super();}public DataTable(String[] column, String[][] row, int rowCount, int colCoun) {super();this.column = column;this.row = row;this.rowCount = rowCount;this.colCoun = colCoun;}public void setDataTable(ArrayList<HashMap<String, String>> list) {rowCount = list.size();colCoun = list.get(0).size();column = new String[colCoun];row = new String[rowCount][colCoun];for (int i = 0; i < rowCount; i++) {Set<Map.Entry<String, String>> set = list.get(i).entrySet();int j = 0;for (Iterator<Map.Entry<String, String>> it = set.iterator(); it.hasNext();) {Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();row[i][j] = entry.getValue();if (i == rowCount - 1) {column[j] = entry.getKey();}j++;}}}public String[] getColumn() {return column;}public void setColumn(String[] column) {this.column = column;}public String[][] getRow() {return row;}public void setRow(String[][] row) {this.row = row;}public int getRowCount() {return rowCount;}public void setRowCount(int rowCount) {this.rowCount = rowCount;}public int getColCoun() {return colCoun;}public void setColCoun(int colCoun) {this.colCoun = colCoun;}
}

4、测试Demo 

/*** 测试Demo* @author Administrator*/
public class TestBusIness{static String searchSql = "select * from score";static String insertSql = "insert into score(name, age, score)values(?,?,?)";static String deleteSql = "delete from score where id = ?";static String updateSql = "update score set name = ? where id = ?";public static void main(String[] args) {intsertData();searchData();}private static void intsertData(){    DBManager dm = new DBManager();String[] coulmn = new String[]{"wyf2",  "23", "89.5"};int[] type = new int[]{Types.CHAR, Types.INTEGER, Types.DOUBLE};try {boolean flag = dm.updateOrAdd(coulmn, type, insertSql);if(flag)System.out.println("插入成功");} catch (SQLException e) {e.printStackTrace();}}private static void searchData(){    DBManager dm = new DBManager();String[] coulmn = null;int[] type = null;try {DataTable dt = dm.getResultData(coulmn, type, searchSql);if(dt != null && dt.getRowCount()> 0){            for(int i = 0; i<dt.getRowCount(); i++){for(int j = 0; j<dt.getColCoun(); j++)System.out.printf(dt.getRow()[i][j]+"\t");System.out.println();}}elseSystem.out.println("查询失败");} catch (SQLException e) {e.printStackTrace();}}
}

文章看着不错,总结比较全面,推荐给大家。

Java Mysql工具类封装相关推荐

  1. java mysql 工具类_Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  2. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  3. Redis工具类封装讲解和实战

    Redis工具类封装讲解和实战     简介:高效开发方式 Redis工具类封装讲解和实战         1.常用客户端 https://redisdesktop.com/download      ...

  4. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  5. Android 图片处理工具类封装2

    http://www.2cto.com/kf/201312/263638.html Android 图片处理工具类封装 2013-12-10     0个评论   来源:Wiker Yong 的专栏  ...

  6. java常用工具类和Hutool常用的工具类整理

    java常用工具类和Hutool常用的工具类整理 1.java常用工具类 1.1 Scanner类 /*** Scanner 类*/@Testpublic void testScanner() {Sc ...

  7. ElasticSearch工具类封装

    最近在项目中有看到一种比较实用的ElasticSearch工具类封装方式,特此记录便于日后查阅.         1.controller层 @RequestMapping(value = " ...

  8. java响应实体类封装

    前后端分离的开发模式中,或者与第三方接口交互,需要规范接口响应,下面是我在开发中的封装的一组响应实体类 响应实体父类, 父类中需要一个code,因为不管是响应消息还是数据,都要有code /**- @ ...

  9. XmlMapper详解及工具类封装

    一.XmlMapper说明 1.依赖包引入 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId& ...

  10. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

最新文章

  1. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
  2. tomcat配置tomcat-redis-session-manager
  3. 深入浅出ShellExecute
  4. js复制数据IE,FF..浏览器兼容
  5. 「微信小程序免费辅导教程」24,基础内容组件icon的使用探索与7月26日微信公众平台的更新解读...
  6. python 数组合并排重_并排深度学习:Julia vs Python
  7. 微信扫码登录网页实现原理
  8. 日照私家驾车族必看之摄像头和测速器地点
  9. 正向代理、反向代理和透明代理的详解
  10. 门槛回归模型_门限回归汇总与空间门槛回归模型简介
  11. HTML:雪碧图、高度塌陷和序号选择器
  12. python3扬州大学校园网认证登录与下线
  13. 一次性发布20个音频IP,看喜马拉雅FM解锁品牌营销新姿势
  14. 宇视交换机vlan路由配置指导
  15. 《Spring》AOP实现原理
  16. jQuery控制网页字体大小
  17. 自定义倒计时跳过按钮
  18. matlab gui 作者,MATLAB GUI设计学习手记(第4版)
  19. kettle使用 - 开启Carte服务
  20. 前端开发与后端开发的区别是什么?

热门文章

  1. python 读写pcd
  2. 从后端到页面:如何全方位监控 Ruby 应用?
  3. 简述python的安装过程_安装Python-3.5.2过程中常见的几种错误
  4. 【转】这么多计算几何题目,够你练了
  5. linux drm 写屏幕,Linux DRM Graphic 显示简单介绍
  6. 方正飞鸿FIX ES2007荣获大连软交会创新产品奖
  7. @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决
  8. Unity 2D打地鼠小游戏
  9. 978_使用emacs lisp安装emacs插件
  10. 数据结构与算法学习资源