Java Mysql工具类封装
原文地址: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工具类封装相关推荐
- java mysql 工具类_Java SE 之 数据库操作工具类(DBUtil)设计
JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...
- Hutool Java常用工具类汇总
简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...
- Redis工具类封装讲解和实战
Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- java aes 工具类_Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
- Android 图片处理工具类封装2
http://www.2cto.com/kf/201312/263638.html Android 图片处理工具类封装 2013-12-10 0个评论 来源:Wiker Yong 的专栏 ...
- java常用工具类和Hutool常用的工具类整理
java常用工具类和Hutool常用的工具类整理 1.java常用工具类 1.1 Scanner类 /*** Scanner 类*/@Testpublic void testScanner() {Sc ...
- ElasticSearch工具类封装
最近在项目中有看到一种比较实用的ElasticSearch工具类封装方式,特此记录便于日后查阅. 1.controller层 @RequestMapping(value = " ...
- java响应实体类封装
前后端分离的开发模式中,或者与第三方接口交互,需要规范接口响应,下面是我在开发中的封装的一组响应实体类 响应实体父类, 父类中需要一个code,因为不管是响应消息还是数据,都要有code /**- @ ...
- XmlMapper详解及工具类封装
一.XmlMapper说明 1.依赖包引入 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId& ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
最新文章
- Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
- tomcat配置tomcat-redis-session-manager
- 深入浅出ShellExecute
- js复制数据IE,FF..浏览器兼容
- 「微信小程序免费辅导教程」24,基础内容组件icon的使用探索与7月26日微信公众平台的更新解读...
- python 数组合并排重_并排深度学习:Julia vs Python
- 微信扫码登录网页实现原理
- 日照私家驾车族必看之摄像头和测速器地点
- 正向代理、反向代理和透明代理的详解
- 门槛回归模型_门限回归汇总与空间门槛回归模型简介
- HTML:雪碧图、高度塌陷和序号选择器
- python3扬州大学校园网认证登录与下线
- 一次性发布20个音频IP,看喜马拉雅FM解锁品牌营销新姿势
- 宇视交换机vlan路由配置指导
- 《Spring》AOP实现原理
- jQuery控制网页字体大小
- 自定义倒计时跳过按钮
- matlab gui 作者,MATLAB GUI设计学习手记(第4版)
- kettle使用 - 开启Carte服务
- 前端开发与后端开发的区别是什么?
热门文章
- python 读写pcd
- 从后端到页面:如何全方位监控 Ruby 应用?
- 简述python的安装过程_安装Python-3.5.2过程中常见的几种错误
- 【转】这么多计算几何题目,够你练了
- linux drm 写屏幕,Linux DRM Graphic 显示简单介绍
- 方正飞鸿FIX ES2007荣获大连软交会创新产品奖
- @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决
- Unity 2D打地鼠小游戏
- 978_使用emacs lisp安装emacs插件
- 数据结构与算法学习资源