用c3p0实现Apache—DBUtils框架的Dao层源码
分类: 课堂随笔 2011-11-22 20:43 484人阅读 评论(0) 收藏 举报
用c3p0实现Apache—DBUtils框架的Dao层源码
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import com.hbsi.domain.User;
import com.hbsi.utils.DBManager_c3p0;
public class UserDaoImpl {
// 插入操作
public void insert() {
// 得到数据库连接池对象
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "insertinto users(name,password) values('liop','8988')";
try {
runner.update(sql);
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// 删除操作
public void delete() {
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "deletefrom users where id=1";
try {
runner.update(sql);
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// 更新操作
public void update() {
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "updateusers set name='老王',password=222 where id=3";
try {
runner.update(sql);
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// 通过Id查询操作
public void findById() {
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "select* from users where id=3";
BeanHandler rsh = newBeanHandler(User.class);
try {
User user =runner.query(sql, rsh);
System.out.println(user.toString());
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// 查询所有
public void findAll() {
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "select* from users";
BeanListHandler rsh = newBeanListHandler(User.class);
try {
List<User>entities = runner.query(sql, rsh);
System.out.println(entities.size());
for (User entity :entities) {
System.out.println(entity.toString());
}
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// 批处理
public void bath() {
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "insertinto users(name,password) values(?,?)";
Object[][] params = { {"aaa", "111" }, { "qqq", "222" },
{"www", "333" }, { "eee", "444" } };
try {
runner.batch(sql,params);
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// ArrayHandler的使用
public void testArrayHandler(){
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "select* from users where id=5";
ArrayHandler rsh = newArrayHandler();
try {
Object[] array =runner.query(sql, rsh);
System.out.println(Arrays.asList(array));
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// ArrayListHandler的使用
public void testArrayListHandler(){
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "select* from users";
ArrayListHandler rsh =new ArrayListHandler();
try {
List<Object[]>array = runner.query(sql, rsh);
for (int i = 1; i< array.size(); i++) {
System.out.println(Arrays.asList(array.get(i)));
}
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
// Map的应用
public voidtestMapListHandler(){
QueryRunner runner = newQueryRunner(DBManager_c3p0.getDataSource());
String sql = "select* from users";
MapListHandler rsh = newMapListHandler();
List<Map<String,Object>> result=null;
try {
result =(List<Map<String, Object>>) runner.query(sql,rsh);
for (int i = 0; i< result.size(); i++) {
Map<String,Object> map = result.get(i);
System.out.println("---------------------");
for(Map.Entry<String, Object> me : map.entrySet()) {
StringcolName = me.getKey();
Objectvalue = me.getValue();
System.out.println(colName+ " = " + value);
}
}
} catch (SQLException e){
// TODOAuto-generated catch block
e.printStackTrace();
}
}
public static voidmain(String[] args) {
// new UserDaoImpl().insert();
// newUserDaoImpl().delete();
// newUserDaoImpl().update();
// newUserDaoImpl().findById();
// newUserDaoImpl().findAll();
// 批处理
// newUserDaoImpl().bath();
// 数组使用
// newUserDaoImpl().testArrayHandler();
//
//newUserDaoImpl().testArrayListHandler();
newUserDaoImpl().testMapListHandler();
}
分享到:
相关推荐
在实际应用中,DButils 通常与其他框架(如 Spring 或 Struts)结合使用,提供便捷的数据访问层(DAO)实现。通过使用 DButils,开发者可以专注于业务逻辑,而不是底层的数据库操作细节,从而提高开发效率和代码质量...
总之,这个“分页小案例源码及Jar包”提供了一个基础的Java Web分页实现,它通过C3P0连接池、DBUtils工具、JSP、Servlet和MySQL数据库,展示了如何在实际项目中实现一个简单的分页功能。对于初学者来说,这是一个很...
QueryRunner是一个用于执行SQL查询和更新的类,而ConnectionPool则是对数据库连接的管理,它通常使用DBCP或C3P0等连接池实现,确保高效且安全的数据库连接复用。 ### 1. 安装与配置DBUtils 要使用DBUtils,你需要...
7. **利用连接池**:如C3P0、HikariCP等,提高数据库连接的管理和效率,避免频繁创建和关闭连接。 8. **错误和异常处理**:封装统一的异常处理机制,避免在每个数据库操作中都写相同的try-catch块。 9. **代码生成...
项目资源包含:可运行源码+数据集+文档 python + numpy, pandas, matplotlib, pyecharts, wordcloud 适用人群:学习不同技术领域的小白或进阶学习者;可作为课程设计、大作业、工程实训或初期项目立项。 数据来源:数据集taxis.csv从网络下载 数据清洗:异常值与缺失值的处理:有一些数据distance(乘车距离)为零而且上下车地点为空,还有些一些数据的payment(支付方式)为空。 数据预处理:将列名更改成中文 标准化与归一化: 数据分析: 数据可视化:
TypeScript 入门教程
人脸识别项目实战
本资源汇总了 历届全国电子设计竞赛(电赛)真题+模拟题,涵盖 电路设计、嵌入式系统、信号处理、自动控制等核心考点,并提供详细解析及综合测评,帮助参赛者高效备赛、查漏补缺、提升实战能力。 适用人群: 适合 准备参加电子设计竞赛的大学生、电赛爱好者、电子信息类相关专业的学生,以及希望提高电子设计和电路分析能力的工程师。 能学到什么: 电赛考察重点:熟悉往届竞赛的命题方向及考核重点。 电路设计与仿真:提升模拟电路、数字电路、单片机等核心技能。 问题分析与解决能力:通过综合测评找到薄弱点并针对性提升。 实战经验:掌握竞赛策略,提高应试效率和设计能力。 阅读建议: 建议先 通读真题,了解题型与解题思路,然后 结合模拟题实战演练,查找不足并通过测评强化练习,逐步提升竞赛能力。
2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf
人脸识别项目源码实战
给大家分享一套课程——Vulkan原理与实战课程
c语言学习
海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注
答谢中书书教学设计.docx
人脸识别项目源码实战
c语言学习
人脸识别项目源码实战
人脸识别项目实战
本美发门店管理系统有管理员和用户两个角色。用户功能有项目预定管理,产品购买管理,会员充值管理,余额查询管理。管理员功能有个人中心,用户管理,美容项目管理,项目类型管理,项目预定管理,产品库存管理,产品购买管理,产品入库管理,会员卡管理,会员充值管理,余额查询管理,产品类型管理,系统管理等。因而具有一定的实用性。 本站是一个B/S模式系统,采用SSM框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得美发门店管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高美发门店管理系统管理效率。 关键词:美发门店管理系统;SSM框架;MYSQL数据库;Spring Boot 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1 MYSQL数据库 2 2.2 B/S结构 3 2.3 Spring Boot框架简介 4 3系统分析 4 3.1可行性分析 4 3.1.1技术可行性 4 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2系
内容概要:本文档介绍了基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例,重点讲述了该项目的背景、目标、挑战与解决方案、技术特点、应用领域等方面的内容。文档详细记录了从项目启动、数据预处理、算法设计(SSA优化CNN-GRU模型)、构建与评估模型到实现美观的GUI界面整个过程,并讨论了防止过拟合的技术如正则化、早停和超参数优化。另外还涵盖了项目扩展的可能性、部署和应用策略、需要注意的地方以及未来改进的方向。全文强调了模型的泛化能力和计算效率,展示了该混合算法模型在实际应用中的优越性能。 适合人群:具备一定的Python编程经验及机器学习基础知识的研究人员和技术人员;对深度学习、智能优化算法及实际应用感兴趣的学者和从业者;寻求提升数据分析和预测准确性的金融分析师、数据科学家等相关专业人士。 使用场景及目标:本文档非常适合用作学习和参考资料,以掌握如何将SSA、CNN与GRU三种先进技术结合起来进行复杂的分类和预测问题求解。具体应用场景包括但不限于以下几个方面:金融领域——股票价格预测;医疗保健领域——辅助诊断;工业制造——预防性维护;智能家居——个性化服务;以及其他涉及到时序数据分析和多模态数据处理的场合。文档既包含了理论知识又提供了完整的源代码示例,可以帮助读者理解算法原理并通过实践中加深对其的认识。 其他说明:该项目不仅仅是关于算法的设计实现,更是有关于系统的整体架构规划以及工程上的考量,比如环境准备(确保环境洁净、必要包的安装等)、数据准备、GPU配置支持等等。同时文中给出了详细的代码片段,方便开发者理解和复现实验成果。值得注意的是,虽然文中提供了一套通用解决方案,但在真实场景下还需要针对性的调整参数或修改网络结构来达到最好的性能效果。此外,对于追求更高的预测精度或解决更大规模的问题,作者建议进一步探索深度强化学习等高级技术和多任务学习策略,并且考虑使用增量学习让模型能够适应新数据而不必重新训练整个模型。最后提到安全性和隐私保护也是项目实施过程中的重要因素,要妥善保管用户的敏感信息并且做到合法合规地收集和使用数据。