医院人员管理系统03_下午:C3P0连接池,完成简单的增删改查

news2024/9/17 9:03:58

文章目录

  • 什么是C3P0
  • 项目目录
  • Students.java
  • C3P0Conn.java
  • StuDao.java
    • 套路
    • 代码

什么是C3P0

C3P0连接池要比jdbc更简单,dao层写方法就能看出来
在这里插入图片描述

项目目录

在这里插入图片描述

Students.java

没有变,直接是jdbc的实体类
跳转我的上一篇文章查看实体类代码

C3P0Conn.java

这个基本也是写好就不用变的

package com.web.util;

import java.sql.Connection;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Conn {
	//数据源类
		private static ComboPooledDataSource ds = new ComboPooledDataSource();
	//获取连接
		public static Connection getConnection(){
				Connection conn = null;
				try {
					conn = ds.getConnection();
					System.out.println("连接成功");
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return conn;
		}
		
		//关闭连接
		public static void closeAll(Connection conn){
			if(conn != null){
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}	
		public static void main(String[] args) {
			Connection connection = getConnection();
//			closeAll(null,null,connection);
		}
}

StuDao.java

这个是主要的业务层,然后在这里写查询方法以及main方法直接运行
每个方法都是一样的套路,多写几个方法就完全记住了

套路

注意总结:

  1. 只有查询是qr.query(),其他增删改都是qr.update();
  2. qr打点调方法这行代码,如果这个方法有返回值,就是要复制的。如果没有就不用赋值。
	//查询

	//1. public 返回值类型 方法名(参数)
		//返回值类型是不同的,
		//比如通过id查询,因为只有一条数据,所以只需要返回一个学生对象,返回类型就是Students 实体类
		//比如查询所有数据,查询到的就是一个集合,所以返回值肯定是List<Students>,尖括号里是泛型,是Students是集体类,每个数据都是一个Students对象
		//比如删除不需要返回什么,返回值写void就行	
	public Students selectById(int id){
		//2. 有返回值就新建返回值类型的对象 并赋值为null
		Students stu = null;
		//3. 固定
		conn = C3P0Conn.getConnection();
		//4. 写实现方法对应的sql语句
		String sql = "select * from stus where id = ?";
		//5.qr 连接语句,再根据提示放入try catch块
		//	这里把try catch块代码删了,方便观看。想看完整代码下面有
			//            连接名,sql语句,                    返回值类型,                 ?占位符
			stu = qr.query(conn, sql, new BeanHandler<Students>(Students.class),id);
		//6. 写finally块,关闭连接
	finally {
			C3P0Conn.closeAll(conn);
		}
		return stu;
	}

代码

package com.web.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.web.entity.Students;
import com.web.util.C3P0Conn;

public class StuDao {
	private Connection conn = null;
	//工具类
	private QueryRunner qr = new QueryRunner();
	
	//查询所有
	public List<Students> selectStuAll(){
		List<Students> list = null;
		//获取连接
		conn = C3P0Conn.getConnection(); 
		//获取sql语句
		String sql = "select * from stus";
		//执行sql语句并返回结果
		try {
			list = qr.query(conn,sql,new BeanListHandler<Students>(Students.class));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			C3P0Conn.closeAll(conn);
		}
		return list;
	}
	
	//查询
	public Students selectById(int id){
		Students stu = null;
		conn = C3P0Conn.getConnection();
		String sql = "select * from stus where id = ?";
		try {
			//            连接名,sql语句,                    返回值类型,                 ?占位符
			stu = qr.query(conn, sql, new BeanHandler<Students>(Students.class),id);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			C3P0Conn.closeAll(conn);
		}
		return stu;
	}
	
	
	//添加
	public void addStu(Students stu){
		conn = C3P0Conn.getConnection();
		String sql = "insert into stus(name,sex,age,birthday,address) values(?,?,?,?,?)";
		
		try {
			qr.update(conn, sql,stu.getName(),stu.getSex(),stu.getAge(),stu.getBirthday(),stu.getAddress());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			C3P0Conn.closeAll(conn);
		}
	}
	
	
	//修改
	public void updateStu(Students stu){
		conn = C3P0Conn.getConnection();
		String sql = "update stus set name=?,sex=?,age=?,birthday=?,address=? where id = ?";
		
		try {
			qr.update(conn, sql,stu.getName(),stu.getSex(),stu.getAge(),stu.getBirthday(),stu.getAddress(),stu.getId());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			C3P0Conn.closeAll(conn);
		}
		
	}
	
	
	//删除
	public void delStu(int id ){
		conn = C3P0Conn.getConnection();
		String sql = "delete from stus where id = ? ";
		
		try {
			qr.update(conn, sql,id);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			C3P0Conn.closeAll(conn);
		}
		
	}
	
	
	public static void main(String[] args) {
		StuDao dao = new StuDao();
		
		//查询一个
		//Students stu = dao.selectById(2);
		//System.out.println(stu);
		
		//添加
		//Students stu = new Students("李四四", "男", 20,"2002-5-3", "三亚市");
		//dao.addStu(stu);
		
		//修改
		//Students stu = dao.selectById(9);
		//可以只改个别
	//	stu.setName("哈尔滨");
		//stu.setAge(22);
	//	stu.setSex("女");
		//dao.updateStu(stu);
		
		//删除
		//dao.delStu(9);
		
		//查询所有
		List<Students> list = dao.selectStuAll();
		System.out.println(list);
	}	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1918799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AmazonS3部署以及nacos配置参数

AmazonS3部署 因为涉及到做的需求的头像的处理&#xff0c;所以需要去找头像的来源&#xff0c;没想到又是我们的老熟人&#xff0c;AmazonS3&#xff0c;巧了已经是第二次用了&#xff0c;上次我是用的别人的工具类去干的&#xff0c;这一次我这边自己编辑具体工具类型。 对应…

敏捷专家CSM认证培训内容概述(附2024年开班时间表)

敏捷专家CSM认证培训是专为希望在Scrum项目中担任Scrum Master角色的个人而设计的专业培训。CSM认证&#xff0c;全称Certified Scrum Master&#xff0c;是敏捷开发领域中备受认可的证书&#xff0c;由Scrum Alliance颁发。以下是对敏捷专家CSM认证培训的详细介绍&#xff1a;…

solidity实战练习1

//SPDX-License-Identifier:MIT pragma solidity ^0.8.24; contract PiggyBank{constructor()payable{emit Deposit(msg.value);//触发事件1//意味着在部署合约的时候&#xff0c;可以向合约发送以太币&#xff08;不是通过调用函数&#xff0c;而是直接在部署合约时发送&#…

JAVA中的回溯算法解空间树,八皇后问题以及骑士游历问题超详解

1.回溯算法的概念 回溯算法顾名思义就是有回溯的算法 回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。回溯法是一种选优搜索法&#xff…

Python 神器:wxauto 库——解锁微信自动化的无限可能

&#x1f4dd;个人主页&#x1f339;&#xff1a;誓则盟约 ⏩收录专栏⏪&#xff1a;机器学习 &#x1f921;往期回顾&#x1f921;&#xff1a;“探索机器学习的多面世界&#xff1a;从理论到应用与未来展望” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f…

短视频矩阵:批量发布的秘密揭秘

在数字化时代&#xff0c;短视频已经成为一种广受欢迎的媒体形式。无论是用于品牌推广、产品营销还是个人创作&#xff0c;短视频都提供了一种直观、生动的方式来吸引观众的注意力。然而&#xff0c;有效地制作、管理和发布短视频对于许多创作者和企业来说是一个挑战。 为此&am…

【Django】报错‘staticfiles‘ is not a registered tag library

错误截图 错误原因总结 在django3.x版本中staticfiles被static替换了&#xff0c;所以这地方换位static即可完美运行 错误解决

旧衣回收小程序开发,提高回收效率,实现创收

随着人们生活水平的提高&#xff0c;对穿衣打扮也越来越重视&#xff0c;衣服更换频率逐渐增高&#xff0c;旧衣回收行业因此产生&#xff0c;并随着市场规模的扩大&#xff0c;拥有了完善的回收产业链&#xff0c; 旧衣回收行业的发展不仅能够让大众获得新的赚钱方式&#xf…

探索创意无限:精彩APP启动页设计案例汇总

启动页是应用启动时出现的过渡页面或动画&#xff0c;旨在提升用户体验、缓解用户焦虑&#xff0c;以及传递品牌或产品的人情味。根据应用性能&#xff0c;其停留时间可能从1秒到3秒不等。启动页同样是应用名片&#xff0c;需要展现品牌的独特个性。运用品牌颜色和 IP 形象能加…

C语言 指针和数组——指针数组的应用:命令行参数

目录 命令行参数 演示命令行参数与main函数形参间的关系 命令行参数  什么是 命令行参数&#xff08; Command Line Arguments &#xff09;&#xff1f;  GUI 界面之前&#xff0c;计算机的操作界面都是字符式的命令行界面 &#xff08; DOS 、 UNIX 、 Linux &…

215.Mit6.S081-实验三-page tables

在本实验室中&#xff0c;您将探索页表并对其进行修改&#xff0c;以简化将数据从用户空间复制到内核空间的函数。 一、实验准备 开始编码之前&#xff0c;请阅读xv6手册的第3章和相关文件&#xff1a; kernel/memlayout.h&#xff0c;它捕获了内存的布局。kernel/vm.c&…

什么是渲染:两种渲染类型、工作原理

如果您是网页设计师或数字艺术家&#xff0c;您可能熟悉渲染过程的概念。这是数字艺术中的重要步骤&#xff0c;帮助您将图形模型转换为最终结果。在本文中&#xff0c;您将了解数字艺术中的渲染是什么、它的工作原理以及它的类型。 一、什么是渲染? 渲染是使用计算机软件对数…

怎么样的主食冻干算好冻干?品质卓越、安全可靠的主食冻干分享

当前主食冻干市场产品质量参差不齐。一些品牌过于追求营养数据的堆砌和利润的增长&#xff0c;却忽视了猫咪健康饮食的基本原则&#xff0c;导致市场上出现了以肉粉冒充鲜肉、修改产品日期等不诚信行为。更令人担忧的是&#xff0c;部分产品未经过严格的第三方质量检测便上市销…

Python实现傅里叶级数可视化工具

Python实现傅里叶级数可视化工具 flyfish 有matlab实现&#xff0c;我没matlab&#xff0c;我有Python&#xff0c;所以我用Python实现。 整个工具的实现代码放在最后,界面使用PyQt5开发 起源 傅里叶级数&#xff08;Fourier Series&#xff09;由法国数学家和物理学家让-巴…

Apache网页优化(企业网站结构部署与优化)

本章结构 一、Apache网页优化 在使用 Apache 作为 Web 服务器的过程中&#xff0c;只有对 Apache 服务器进行适当的优化配置&#xff0c;才能让 Apache 发挥出更好的性能。反过来说&#xff0c;如果 Apache 的配置非常糟糕&#xff0c;Apache可能无法正常为我们服务。因此&…

链接报错undefined reference to + libc++和libstdc++

1 问题现象 subscribe(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) 描述&#xff1a;编译的时候&#xff0c;最后的链接中一直没成功 2 可能原因 2.1 链接时缺失了相关目标文件&#xff08;.o&#x…

Visual Studio 2022 安装及使用

一、下载及安装 VS 官网&#xff1a;Visual Studio: IDE and Code Editor for Software Developers and Teams 下载免费的社区版 得到一个.exe文件 右键安装 选择C开发&#xff0c;并修改安装位置 等待安装 点击启动 二、VS的使用 1.创建项目 打开VS&#xff0c;点击创建新项…

1招搞定maven打包空间不足问题

目录 一、工具应用问题 二 、使用效果 三、使用方法 四、练习手段 一、工具应用问题 使用maven的package功能打包失败&#xff0c;报错“Java heap space”错误。 二 、使用效果 修改IDEA中maven内存使用大小后&#xff0c;打包成功。 三、使用方法 点击菜单“File->Set…

openWrt(4) - uci

uci show 1) uci show - 查看所有配置文件列表 2)查看特定配置文件的详细信息&#xff1a; uci show network 我们以 network 为例 3&#xff09;查看特定配置项的详细信息&#xff1a; uci show network.wan 添加一个新的配置条目&#xff1a;uci add network interface …

Apifox报错404:网络错误,请检查网络,或者稍后再试的解决办法

详细报错如图&#xff1a; 解决办法&#xff1a; 1、检查 请求方法&#xff08;get&#xff0c;post&#xff09;是否正确&#xff0c;请求的URL是否正确&#xff0c;如果不正确&#xff0c;修改后重新发起请求&#xff1b;如果都正确&#xff0c;看2 2、复制curl用postman来…