MySQL助手_java 8.0Mysql 助手类
由于mysql版本问题, 8.0的配置文件变了
配置文件
driverClassName = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/studentmanage?\
characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username = root
password = 123456
Sqlhelper
package edu.rjxy.xjdx.emps.common.utils;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.sql.*;
public class SqlHelper {
private static Connection conn = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
//连接数据库的参数
private static String url = null;
private static String userName =null;
private static String driver =null;
private static String passwd =null;
private static CallableStatement cs = null;
private static Properties pp = null;
private static InputStream fis = null;
public static CallableStatement getCs() {
return cs;
}
public static Connection getCt() {
return conn;
}
public static PreparedStatement getPs() {
return ps;
}
public static ResultSet getRs() {
return rs;
}
static {
try {
pp = new Properties();
fis = SqlHelper.class.getClassLoader().getResourceAsStream("dbinfo.properties");//配置文件
pp.load(fis);
url = pp.getProperty("url");
driver = pp.getProperty("driverClassName");
userName = pp.getProperty("username");
passwd = pp.getProperty("password");
Class.forName(driver);
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
fis.close();
}
catch(IOException e) {e.printStackTrace();}
fis = null;//垃圾回收站上收拾
}
}
public static Connection getConnection() {
try {
conn = DriverManager.getConnection(url, userName,passwd);
}
catch(Exception e) {e.printStackTrace();}
return conn;
}
//*************callPro1存储过程函数1*************
public static CallableStatement callPro1(String sql, String[] parameters) {
try {
conn = getConnection();
cs = conn.prepareCall(sql);
if(parameters!=null) {
for(int i = 0; i < parameters.length; ++i) {
cs.setObject(i + 1, parameters[i]);
}
}
cs.execute();
}
catch(Exception e) {
e.printStackTrace(); throw new RuntimeException(e.getMessage());
} finally {
close(rs,cs, conn);
}
return cs;
}
//*******************callpro2存储过程2************************
public static CallableStatement callPro2(String sql, String[] inparameters, Integer[] outparameters) {
try {
conn = getConnection();
cs = conn.prepareCall(sql);
if(inparameters != null) {
for(int i = 0; i < inparameters.length; ++i) {
cs.setObject(i+1,inparameters[i]);
}
}
//cs.registerOutparameter(2,oracle.jdbc.OracleTypes.CURSOR);
if(outparameters != null) {
for(int i = 0; i < outparameters.length; ++i) {
cs.registerOutParameter(inparameters.length+1+i,outparameters[i]);
}
}
cs.execute();
}
catch(Exception e) {
e.printStackTrace(); throw new RuntimeException(e.getMessage());
}
finally {
}
return cs;
}
public static ArrayList executeQuery(Class type, String sql, String[] parameters) {
ArrayList list = null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
if(parameters!=null) {
for(int i = 0; i < parameters.length; ++i) {
ps.setString(i+1,parameters[i]);
}
}
rs = ps.executeQuery();
//得到结果集(rs)的结构
ResultSetMetaData rsmd = rs.getMetaData();
list = new ArrayList();
//通过rsmd可以得到该结果集有多少列
int columnNum = rsmd.getColumnCount();
//获取字段名
String[] clounmNames = new String[columnNum];
for (int i = 0; i < columnNum; i++) {
clounmNames[i] = rsmd.getColumnLabel(i+1);
}
Method[] methods = type.getDeclaredMethods();
//从rs中取出数据,并且封装到ArrayList中
while (rs.next()) {
Object obj = type.getDeclaredConstructor().newInstance();
for (int i = 0; i < columnNum; i++) {
String clounmName = clounmNames[i];
Object clounmValue = rs.getObject(i + 1);
String setterName = "set"+clounmName.substring(0,1).toUpperCase()+clounmName.substring(1);// setName
Method setter = null;
for (int j = 0; j < methods.length; j++) {
if (methods[j].getName().equals(setterName)){
setter = methods[j];
break;
}
}
if(setter!=null ){
// System.out.println(""+setter + ":"+clounmValue.getClass().getName() );
if(setter.getParameterTypes()[0].getName().equals("boolean") || setter.getParameterTypes()[0].getName().equals("java.lang.Boolean")){
clounmValue = ((Integer)clounmValue==0)?false:true;
}
boolean isBasic = false;
String parameter0Name = setter.getParameterTypes()[0].getName();
String[] allBasic =new String[]{"byte","short","int","long","float","double","char","boolean"};
for (String each:
allBasic ) {
if(parameter0Name.equals(each)){
isBasic= true;
break;
}
}
if( !( clounmValue==null && isBasic ) ){
setter.invoke(obj,clounmValue);
}
}
//获取字段值
}
list.add((T)obj);
}
return list;
}
catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps, conn);
}
}
public static int queryCount(String sql, String[] parameters) {
ArrayList list = null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
if(parameters!=null) {
for(int i = 0; i < parameters.length; ++i) {
ps.setString(i+1,parameters[i]);
}
}
rs = ps.executeQuery();
if (!rs.next()) return 0;
return Integer.parseInt(rs.getObject(1).toString());
}
catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps, conn);
}
}
public static ArrayList executeQuery(String sql, String[] parameters) {
ArrayList list = null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
if(parameters!=null) {
for(int i = 0; i < parameters.length; ++i) {
ps.setString(i+1,parameters[i]);
}
}
rs = ps.executeQuery();
//得到结果集(rs)的结构
ResultSetMetaData rsmd = rs.getMetaData();
list = new ArrayList();
//通过rsmd可以得到该结果集有多少列
int columnNum = rsmd.getColumnCount();
//从rs中取出数据,并且封装到ArrayList中
while (rs.next()) {
Object []objects = new Object[columnNum];
for(int i = 0; i < objects.length; ++i) {
objects[i] = rs.getObject(i + 1);
}
list.add(objects);
}
return list;
}
catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps, conn);
}
}
public static void executeUpdate2(String[] sql,String[][] parameters) {
try {
conn = getConnection();
conn.setAutoCommit(false);
for(int i = 0; i < sql.length; ++i) {
if(null != parameters[i]) {
ps = conn.prepareStatement(sql[i]);
for(int j = 0; j < parameters[i].length; ++j) {
ps.setString(j + 1, parameters[i][j]);
}
ps.executeUpdate();
}
}
conn.commit();
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new RuntimeException(e.getMessage());
} finally {
close(rs,ps, conn);
}
}
//先写一个update、delete、insert
//sql格式:update 表名 set 字段名 =?where 字段=?
//parameter神应该是(”abc“,23)
public static void executeUpdate(String sql,String[] parameters) {
try {
conn =getConnection();
ps = conn.prepareStatement(sql);
if(parameters!=null) {
for(int i=0;i
ps.setString(i+1,parameters[i]);
}
}
ps.executeUpdate();
} catch(Exception e) {
e.printStackTrace();//开发阶段
//抛出异常
//可以处理,也可以不处理
throw new RuntimeException(e.getMessage());
} finally {
close(rs,ps, conn);
}
}
public static void close(ResultSet rs,Statement ps,Connection ct)
{
//关闭资源(先开后关)
if(rs!=null) {
try {
rs.close();
} catch(SQLException e) {
e.printStackTrace();
}
rs=null;
}
if(ps!=null) {
try {
ps.close();
} catch(SQLException e) {
e.printStackTrace();
}
ps=null;
}
if(null!=ct) {
try {
ct.close();
} catch(SQLException e) {
e.printStackTrace();
}
ct=null;
}
}
public static List resultSetToList(ResultSet rs) throws java.sql.SQLException {
if (rs == null) return Collections.emptyList();
ResultSet md = (ResultSet) rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等
int columnCount = ((ResultSetMetaData) md).getColumnCount(); //返回此 ResultSet 对象中的列数
List list = new ArrayList();
Map rowData = new HashMap();
while (rs.next()) {
rowData = new HashMap(columnCount);
for (int i = 1; i <= columnCount; i++) {
rowData.put(((ResultSetMetaData) md).getColumnName(i), rs.getObject(i));
}
list.add(rowData);
}
return list;
}
}
MySQL助手_java 8.0Mysql 助手类相关推荐
- 搜索的php mysql代码生成器_PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)...
根据 Mysql 里的字段 自动生成 类文件: 但需要导入: require_once ./db/ez_sql_core.php; require_once ./db/ez_sql_mysql.php ...
- 玻璃心?App Store下架PP助手与360手机助手,做aso会被苹果下架吗
柚鸥ASO 在别人的场子混,码头得拜,高香得烧,可即便如此,毕竟是人在屋檐下,纵然低了头,弯了腰,也免不了东家将你扫地出门,为哪般?业务有冲突嘛,在利益面前,哪怕租客背景强大,也照下架不误,谁叫你抢我 ...
- 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...
PHP学习教程文章简介: 同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法: // mysql connect $db = new SQL(mysql:host=localhost ...
- 2场直播丨MySQL 数据库最常见的 6 类故障的排除方法、2020数据技术嘉年华·金融峰会暨数据库大咖讲坛(第4期)...
一.MySQL 数据库最常见的 6 类故障的排除方法 - 2020年11月12日 20:00 - 2020年11月12日 21:00 MySQL 无法启动?MySQL 连接不上?MySQL 挂起(hu ...
- 自定义tt文本模板实现MySql指数据库中生成实体类
自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...
- 什么是政微助手?政微助手是干什么用的?
什么是政微助手?政微助手是一个通过依托微信生态,利用低代码,微服务的形式,为国内三四线基层政务部门打造的一个移动端减负增效工具,该工具通过打通个人微信.企业微信.微信小程序三端的数据壁垒,通过高效的S ...
- 软件:股票小助手/盯盘小助手!
软件:股票小助手/盯盘小助手 功能: 1.隐蔽,能和常用工作软件融为一体,即使被领导同事看见屏幕,也察觉不了: 2.能实时更新数据,不能有更新频率限制: 3.能设置目标上限,下限价,达到目标后已隐蔽的 ...
- 爱思助手 for Mac(苹果手机助手)中文版
爱思助手 for Mac是一款非常实用的苹果手机助手,爱思助手mac版提供了备份恢复.一键刷机.一键越狱.验机.安装应用等实用的功能, 非常全面,爱思助手苹果电脑版可以轻松帮你管理你的iPhone手机 ...
- 专为mac用户设计的苹果手机助手。爱思助手 Mac版结构更清晰,功能更好用,界面更清晰,让你能够轻松查看设备信息,下载最新最火的应用游戏。
爱思助手 for Mac(苹果手机助手) 这是专为mac用户设计的苹果手机助手.爱思助手 Mac版结构更清晰,功能更好用,界面更清晰,让你能够轻松查看设备信息,下载最新最火的应用游戏,还能下载酷炫的手 ...
最新文章
- 大自然创作的分形艺术
- c# xml的增删改查操作 xmlDocument 的用法
- 使用PowerDesigner做数据库设计(二)
- win2008修改远程端口
- 火狐对ajax的onreadystatechange与IE的不同。
- apk 打包 java出错_Android Release 打包提示 错误:找不到符号
- 怎么自学python-如何系统地自学 Python?
- 通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发
- 二十三、K8s集群强化1-认证
- 如何将文件从iPhone或iPad空投到Mac计算机?
- 优秀的产品管理促进了IBM的成功转型--和谐生产方式百题03
- H5:100款html5微信小游戏最新最新源码
- Linux刻录光盘win10认不到,win10系统无法读取DVD和刻录光盘的具体操作步骤
- vue3+tsx封装组件
- 【已解决】CSDN无法粘贴图片、截图 或者 上传图片一直显示失败
- 当你从美梦中惊醒的时候,你该做什么?
- Java怎样把时间转成毫秒_如何转换时间格式 java如何把时间格式转为毫秒
- 看过《非你莫属》那期,因为刘俐俐,说说陈鸥
- 知识付费内容分类和平台解析
- 孤独源于过分的优越感,而优越感的另一面,则是自卑
热门文章
- 视频移动侦测VMD的实现
- 服务器端系统饼图,服务器 操作系统 饼图
- JVM参数调优详细过程
- webpack及node.js基础必会--path模块的常见操作
- LCFinder 0.3.0 Beta 发布,图像标注与目标检测工具
- 数据结构与算法——常用数据结构及其Java实现
- swoole_event_add实现异步
- 使用 CocoaPods 对公有库开源和私有库组件
- pt-heartbeat 监测RDS延迟
- Stack Overflow: The Architecture - 2016 Edition(Translation)