package com.yc.commons;
import java.io.IOException;
import java.lang.reflect.Method;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DbHelper {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
static{//执行静态类
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取数据库的连接
public Connection getConn() throws SQLException{
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","a");
return conn;
}
//关闭资源
public void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs){
//关闭资源
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 返回多条记录查询操作 select* from guanli
* sql
* params
* @throws IOException
* @throws SQLException
*/
public List<Map<String,Object>> selectMutil(String sql,List<Object>params) throws IOException, SQLException{
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
Map<String,Object> map=null;
try {
conn=getConn();
pstmt=conn.prepareStatement(sql);
//设置参数
setParamsList(pstmt,params);
//获取结果集
rs=pstmt.executeQuery();
//根据结果集对象获得所有结果集中所有列名
List<String> columnNames=getAllColumnNames(rs);
while(rs.next()){
map=new HashMap<String,Object>();
//循环所有的列名
for(String name:columnNames){
String typeName=null; //值的类型
Object obj=null;//获取的值
obj=rs.getObject(name);
if(null!=obj){
typeName=obj.getClass().getName();
}
if("oracle.sql.BLOB".equals(typeName)){
// //对图片进行处理
// BLOB blob=(BLOB)obj;
// InputStream in=blob.getBinaryStream();
// byte bt[]=new byte[(int) blob.length()];
// in.read(bt);
// map.put(name, bt);//将blob类型值以字节数组的形式存储
// }else{
map.put(name, obj);
}
}
list.add(map);
}
} finally{
closeAll(conn,pstmt,rs);
}
return list;
}
/**
* 单记录的查询select *from table_name where id=?
* @param sql 查询的sql语句
* @param params 传入的参数 集合中 集合的参数顺序必须和?顺序一致
* @return
* @throws SQLException
* @throws IOException
*/
public Map<String,Object> selectSingle(String sql,List<Object> params) throws SQLException, IOException{
Map<String,Object> map=null;
try {
conn=getConn();
pstmt=conn.prepareStatement(sql);
//设置参数
setParamsList(pstmt,params);
//获取结果集
rs=pstmt.executeQuery();
//根据结果集对象获得所有结果集中所有列名
List<String> columnNames=getAllColumnNames(rs);
if(rs.next()){
map=new HashMap<String,Object>();
String typeName=null; //值的类型
Object obj=null;//获取的值
//循环所有的列名
for(String name:columnNames){
obj=rs.getObject(name);
if(null!=obj){
typeName=obj.getClass().getName();//返回的类型
}
else{
continue;
}
if("oracle.sql.BLOB".equals(typeName)){//判断的是是否是U-image 是会进行赋值
// //对图片进行处理
// BLOB blob=(BLOB)obj;
// InputStream in=blob.getBinaryStream();
// byte bt[]=new byte[(int) blob.length()];
// in.read(bt);
// map.put(name, bt);//将blob类型值以字节数组的形式存储
// }else{
map.put(name, obj);
}
}
}
} finally{
closeAll(conn,pstmt,rs);
}
return map;
}
/**
*
* 获取查询后的字段名
* @param result
* @return
* @throws SQLException
*/
public List<String> getAllColumnNames( ResultSet rs) throws SQLException {
List<String> list=new ArrayList<String>();
ResultSetMetaData data =rs.getMetaData();
int count=data.getColumnCount();//返回列数目
for(int i=1;i<=count;i++){
String str=data.getColumnName(i);//获取指定列的名称
//添加列名到List集合中
list.add(str);
}
return list;
}
//将集合设置到预编译对象中
public void setParamsList(PreparedStatement pstmt, List<Object> params) throws SQLException {
if(null==params||params.size()<=0){
return;
}
for(int i=0;i<params.size();i++){
pstmt.setObject(i+1, params.get(i));
}
}
/**
* 批处理操作 多个insert update dalete 同一个事务
* sqls 多条sql语句
* params 多条sql语句的参数 每条sql语句参数小List 集合中多个再封装到大的list集合一一对应
*
*/
public int update(List<String>sqls,List<List<Object>> params)throws Exception{
int result=0;
try{
conn=getConn();
//设置事务手动提交
conn.setAutoCommit(false);
//循环sql语句
if(null==sqls||sqls.size()<=0){
return result;
}
for(int i=0;i<sqls.size();i++){
//获取sql语句并创建预编译对象
pstmt=conn.prepareStatement(sqls.get(i));
//获取对应的sql语句参数集合
List<Object> param=params.get(i);
//设置参数
setParamsList(pstmt,param);
//执行更新
result=pstmt.executeUpdate();
if(result<=0){
return result;
}
}
//手动提交
conn.commit();
}catch(Exception e){
//设置回滚
conn.rollback();
result=0;
}finally{
//还原事务的状态
conn.setAutoCommit(true);
closeAll(conn,pstmt,rs);
}
return result;
}
/**
* 更新操作 增删改
* sql 更新语句
* params 传入的参数 不定长的对象数组 传入的参数的顺序与?顺序一致
*/
public int update(String sql,Object...params){
int result=0;
try {
conn=getConn();//获取连接对象
pstmt=conn.prepareStatement(sql);
//设置参数
setParamsObject(pstmt,params);
//执行
result=pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll(conn,pstmt,null);
}
return result;
}
private void setParamsObject(PreparedStatement pstmt, Object... params) throws SQLException {
if(null==params||params.length<0){
return;
}
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1, params[i]);//将数组中第i个元素设置为第i+1个问号 从1开始赋值才对的
}
}
/**
* 聚合函数操作 select count(*) from guanli
* @param sql
* @param params
* @return
*/
public double getPolymer(String sql, List<Object> params) {
double result=0;
try {
conn=getConn();
pstmt=conn.prepareStatement(sql);
setParamsList(pstmt,params);
rs=pstmt.executeQuery();
if(rs.next()){
result=rs.getDouble(1);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll(conn,pstmt,rs);
}
return result;
}
/**
* 返回一行数据
* 例如Map
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> T findSingle(String sql,List<Object> params,Class<T> cls)throws Exception{
T t=null;
try{
conn=getConn();
pstmt=conn.prepareStatement(sql);
//设置参数
setParamsList(pstmt,params);
rs=pstmt.executeQuer
没有合适的资源?快使用搜索试试~ 我知道了~
天天生鲜项目管理系统.zip
共290个文件
png:83个
java:38个
class:38个
需积分: 15 52 下载量 69 浏览量
2019-11-17
16:05:24
上传
评论 17
收藏 44.53MB ZIP 举报
温馨提示
上传的资源为水果销售管理系统(天天生鲜),基本语言采用的是Java与web动态项目,内含mysql数据库脚本与项目源代码(前台与后台),还有软件录制视频与截图,如果在使用的过程中遇到了些许问题,也可以留言帮你解决,希望我所上传的资源能够真正帮助到你。
资源推荐
资源详情
资源评论
收起资源包目录
天天生鲜项目管理系统.zip (290个子文件)
DbHelper.class 11KB
VerifyCodeUtils.class 9KB
OrderServlet.class 8KB
OrderDAO.class 7KB
CartServlet.class 6KB
FoodServlet.class 6KB
BaseServlet.class 5KB
FileUploadServlet.class 5KB
UserServlet.class 5KB
OrderVO.class 5KB
FoodDAO.class 4KB
CartDAO.class 4KB
AlipayConfig.class 4KB
CartVO.class 4KB
UserDAO.class 4KB
FoodPO.class 3KB
OrderPO.class 3KB
AddrServlet.class 3KB
OrderItemServlet.class 3KB
OrderDAOTest.class 3KB
VisitCountListener.class 3KB
CartDAOTest.class 2KB
CartPO.class 2KB
OrderItemPO.class 2KB
AddrDAO.class 2KB
AddrPO.class 2KB
CartTest.class 1KB
UserPO.class 1KB
EncodingFilter.class 1KB
SucceedServlet.class 1KB
AdminDAO.class 1KB
StringUtil.class 1KB
RegisterTest.class 930B
FoodTest.class 914B
VideoPO.class 861B
WebUtil.class 791B
AdminPO.class 737B
VoteUtil.class 572B
.classpath 806B
org.eclipse.wst.common.component 464B
org.eclipse.wst.jsdt.ui.superType.container 49B
easyui.css 73KB
index.css 6KB
main.css 5KB
main.css 5KB
style.css 5KB
user.css 4KB
order.css 3KB
goods.css 3KB
cart.css 3KB
login.css 3KB
login.css 3KB
details.css 3KB
icon.css 2KB
reg.css 2KB
reset.css 757B
reset.css 757B
reset.css 757B
unlock.css 646B
foot.css 350B
loading.gif 2KB
buy_cn.gif 1KB
blank.gif 43B
blank.gif 43B
orderitem.html 4KB
addFood.html 3KB
showFood.html 2KB
showUser.html 2KB
showOrder.html 1KB
menu.html 1KB
showUser.html 208B
updateOrder.html 145B
showOrder.html 145B
addUser.html 144B
updateOrder.html 126B
alipay-sdk-java20170324180803.jar 2.22MB
alipay-sdk-java20170324180803-source.jar 2.06MB
mysql-connector-java-5.1.46.jar 981KB
commons-io-2.6.jar 210KB
gson-2.3.1.jar 206KB
commons-fileupload-1.4.jar 71KB
commons-logging-1.1.1.jar 59KB
DbHelper.java 12KB
VerifyCodeUtils.java 8KB
OrderServlet.java 7KB
OrderDAO.java 6KB
CartServlet.java 6KB
FoodServlet.java 5KB
AlipayConfig.java 5KB
UserServlet.java 4KB
BaseServlet.java 4KB
FileUploadServlet.java 4KB
CartDAO.java 4KB
OrderVO.java 3KB
FoodDAO.java 3KB
CartVO.java 3KB
UserDAO.java 3KB
FoodPO.java 2KB
OrderPO.java 2KB
VisitCountListener.java 2KB
共 290 条
- 1
- 2
- 3
资源评论
bug
- 粉丝: 90
- 资源: 53
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功