package util;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import entity.Page;
public class DBUtil {
private static Logger logger = Logger.getLogger(DBUtil.class);
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
public static Connection getConnection() throws Exception {
try {
Connection conn = tl.get();
if (conn == null) {
// conn为空就创建一个新的conn
conn = DBDataSource.getConnectionC3P0();
// 将conn存入到当前线程中?
tl.set(conn);
}
return conn;
} catch (Exception e) {
logger.info(e.getMessage());
throw new Exception(e);
}
}
/**
* 获取单条记录,并以对象形式返回,sql中没有占位符参数 select * from table where id = 1
*
* @param sql
* @param cls
* @return
* @throws Exception
*/
public static <T> T getObject(String sql, Class<T> cls) throws Exception {
return getObject(sql, null, cls);
}
/**
* 获取单条记录,并以对象形式返回,sql中含有占位符参数 select * from table where id = ?
*
* @param sql
* @param paras
* @param cls
* @return
* @throws Exception
*/
public static <T> T getObject(String sql, List<Object> paramList, Class<T> cls) throws Exception {
Connection conn = getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
T singleObject = null;
int index = 1;
try {
pst = conn.prepareStatement(sql);
if (pst == null) {
return null;
}
setPreparedStatementParamByType(pst,paramList);
rs = pst.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while (rs.next()) {
singleObject = cls.newInstance();
for (int i = 0; i < columnCount; i++) {
// 获取的是原始名
// String columnName = rsmd.getColumnName(i + 1);
// 获取的是别名
String columnName = rsmd.getColumnLabel(i + 1);
Object columnValue = rs.getObject(columnName);
// 如果数据库字段带有下划线,比如user_id,则需要转为userId;
columnName = StringUtil.lineToHump(columnName);
Field field = cls.getDeclaredField(columnName);
field.setAccessible(true);
field.set(singleObject, columnValue);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
logger.info(e.getMessage());
throw new Exception(e);
} finally {
close(conn, pst);
}
return singleObject;
}
/**
* 获取单条记录,并以Map形式返回,sql中含有占位符参数
*
* @param sql:查询语句
* @return
* @throws Exception
*/
public static Map<String, Object> getObjectMap(String sql) throws Exception {
return getObjectMap(sql, null);
}
/**
* 获取单条记录,并以Map形式返回,sql中含有占位符参数
*
* @param sql:查询语句
* @param paramList:参数
* @return
* @throws Exception
*/
public static Map<String, Object> getObjectMap(String sql, List<Object> paramList) throws Exception {
if (sql == null || sql.trim().equals("")) {
logger.info("parameter is valid!");
return null;
}
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
Map map = new HashMap<String, Object>();
try {
conn = getConnection();
pst = conn.prepareStatement(sql);
if (pst == null) {
return null;
}
setPreparedStatementParamByType(pst, paramList);
rs = pst.executeQuery();
List list = getQueryMapList(rs);
if (list.isEmpty()) {
return null;
}
map = (HashMap) list.get(0);
} catch (Exception e) {
logger.info(e.getMessage());
throw new Exception(e);
} finally {
close(conn, pst, rs);
}
return map;
}
/**
* 查询记录,返回对象列表,sql中没有占位符参数 select * table where name like '%张三%';
*
* @param sql
* 查询语句
* @param cls
* 返回对象的类型
* @return
* @throws Exception
*/
public static <T> List<T> getQueryList(String sql, Class<T> cls) throws Exception {
return getQueryList(sql, null, cls);
}
/**
* 查询记录,返回对象列表,sql中含有占位符参数 select* from table where name like '%?%'
*
* @param sql
* 查询语句
* @param paras
* 查询参数
* @param cls
* 返回对象的类型
* @return
* @throws Exception
*/
public static <T> List<T> getQueryList(String sql, List<Object> paramList, Class<T> cls) throws Exception {
Connection conn = getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
T singleObject = null;
int index = 1;
List<T> list = new ArrayList<T>();
try {
pst = conn.prepareStatement(sql);
if (pst == null) {
return null;
}
setPreparedStatementParamByType(pst, paramList);
rs = pst.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while (rs.next()) {
singleObject = cls.newInstance();
for (int i = 0; i < columnCount; i++) {
// 获取的是原始名
// String columnName = rsmd.getColumnName(i + 1);
// 获取的是别名
String columnName = rsmd.getColumnLabel(i + 1);
Object columnValue = rs.getObject(columnName);
// 如果数据库字段带有下划线,比如user_id,则需要转为userId;
columnName = StringUtil.lineToHump(columnName);
Field field = cls.getDeclaredField(columnName);
field.setAccessible(true);
field.set(singleObject, columnValue);
}
list.add(singleObject);
}
} catch (Exception e) {
logger.info(e.getMessage());
throw new Exception(e);
} finally {
close(conn, pst, rs);
}
return list;
}
/**
* 查询记录,返回Map数据列表,sql中无占位符参数 select * table where name like '%张三%';
*
* @param sql:查询语句
* @return
*/
public static List<Map<String, Object>> getQueryMapList(String sql) throws Exception {
return getQueryMapList(sql, null);
}
/**
* 查询记录,返回Map数据列表,sql有占位符参数 select * table where name like '%?%';
*
* @param sql�?
* 查询
* @param paramList�?
* 占位符参数
* @return
*/
public static List<Map<String, Object>> getQueryMapList(String sql, List<Object> paramList) throws Exception {
if (sql == null || sql.trim().equals("")) {
logger.info("parameter is valid!");
return null;
}
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
List<Map<String, Object>> queryList = null;
try {
conn = getConnection();
pst = conn.prepareStatement(sql);
if (pst == null) {
return null;
}
setPreparedStatementParamByType(pst, paramList);
rs = pst.executeQuery();
queryList = getQueryMapList(rs);
} catch (RuntimeException e) {
logger.info(e.getMessage());
throw new Exception(e);
} finally {
close(conn, pst, rs);
}
return queryList;
}
/**
* 分页查询,分页list为对象集合
*
* @param sql 查询语句
* @param params 查询条件参数
* @param page 分页信息
* @return
* @throws Exception
*/
public static <T> Page getQueryPage(String sql, List<Object> paramList, Page page, Class<T> cls) throws Exception {
int totalPages = 0; //页数
Integer rows = 0;//数据条数
//分页工具类
List<T> list = null
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一、项目简介 本项目是一套基于java swing的电子商务系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值 二、技术实现 后端:java swing,mysql,面向对象 运行环境及开发工具:jdk8,idea或者eclipse,Navicat 三、系统功能 系统分为两种类型的用户:管理员和普通用户,不同类型用户登录进去看到的菜单不一样。 主要功能包括: 用户的登录,注册,管理用户信息,会员列表,会员充值 管理商品类别 商品管理:商品信息的增删改查 订单管理:订单列表,发货 我的购物车管理,查看商品,我的订单管理,退出系统等功能 详见:https://blog.csdn.net/weixin_43860634/article/details/128547656
资源推荐
资源详情
资源评论
收起资源包目录
java swing的电子商务系统【源码+数据库】 (219个子文件)
DBUtil.class 13KB
DBUtil.class 13KB
CartChaxunFrame.class 8KB
CartChaxunFrame.class 8KB
OrderChuliFrame.class 7KB
OrderChuliFrame.class 7KB
GoodsAdminFrame.class 6KB
OrderUserChaxunFrame.class 6KB
OrderUserChaxunFrame.class 6KB
GoodsAdminFrame.class 6KB
GoodsBianjiFrame.class 6KB
CatalogAdminFrame.class 6KB
UserQueryFrame.class 6KB
GoodsBianjiFrame.class 6KB
CatalogAdminFrame.class 6KB
UserQueryFrame.class 6KB
GoodsXuanzeFrame.class 5KB
GoodsXuanzeFrame.class 5KB
GoodDao.class 5KB
GoodDao.class 5KB
DengLuFrame.class 5KB
DengLuFrame.class 5KB
OrderDao.class 5KB
OrderDao.class 5KB
UserChongzhiFrame.class 4KB
UserDao.class 4KB
UserDao.class 4KB
CartChaxunFrame$3.class 4KB
UserUpdateFrame.class 4KB
CartChaxunFrame$3.class 4KB
UserChongzhiFrame.class 4KB
UserUpdateFrame.class 4KB
ZhuceFrame.class 4KB
ZhuceFrame.class 4KB
CartTianjiaFrame.class 4KB
CartTianjiaFrame.class 4KB
DengLuFrame$4.class 4KB
GoodsBianjiFrame$1.class 4KB
Page.class 4KB
Page.class 4KB
GoodsBianjiFrame$1.class 4KB
DengLuFrame$4.class 4KB
OrderUserChaxunFrame$1.class 4KB
OrderUserChaxunFrame$1.class 4KB
UserUptpwdFrame.class 3KB
AdminzhuyaoFrame.class 3KB
AdminzhuyaoFrame.class 3KB
UserMainFrame.class 3KB
UserMainFrame.class 3KB
UserUptpwdFrame.class 3KB
CartTianjiaFrame$1.class 3KB
CartTianjiaFrame$1.class 3KB
CatalogDao.class 3KB
CatalogDao.class 3KB
CartChaxunFrame$2.class 3KB
CartChaxunFrame$2.class 3KB
ZhuceFrame$1.class 3KB
ZhuceFrame$1.class 3KB
CartDao.class 3KB
CartDao.class 3KB
OrderUserChaxunFrame$2.class 3KB
OrderUserChaxunFrame$2.class 3KB
Order.class 3KB
Order.class 3KB
UserChongzhiFrame$1.class 3KB
OrderChuliFrame$1.class 3KB
UserChongzhiFrame$1.class 3KB
OrderChuliFrame$1.class 3KB
CatalogAdminFrame$1.class 3KB
CatalogAdminFrame$1.class 3KB
Food.class 3KB
Food.class 3KB
StringUtil.class 3KB
UserUptpwdFrame$1.class 3KB
UserUptpwdFrame$1.class 3KB
StringUtil.class 3KB
OrderItemDao.class 2KB
OrderItemDao.class 2KB
UserUpdateFrame$1.class 2KB
User.class 2KB
User.class 2KB
UserUpdateFrame$1.class 2KB
Cart.class 2KB
Cart.class 2KB
OrderItem.class 2KB
OrderItem.class 2KB
DateUtil.class 2KB
DateUtil.class 2KB
DBDataSource.class 2KB
DBDataSource.class 2KB
CartChaxunFrame$4.class 2KB
CartChaxunFrame$4.class 2KB
GoodsAdminFrame$1.class 2KB
UserQueryFrame$1.class 2KB
GoodsAdminFrame$1.class 2KB
UserQueryFrame$1.class 2KB
GoodsXuanzeFrame$2.class 2KB
GoodsXuanzeFrame$2.class 2KB
GoodsXuanzeFrame$1.class 1KB
GoodsXuanzeFrame$1.class 1KB
共 219 条
- 1
- 2
- 3
资源评论
- 大嘿二哈2023-06-05资源不错,对我启发很大,获得了新的灵感,受益匪浅。
- 2301_767299142023-03-08感谢资源主的分享,很值得参考学习,资源价值较高,支持!
飞翔的佩奇
- 粉丝: 3517
- 资源: 736
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功