当前位置: 首页 > news >正文

Druid连接池练习

练习描述

完成商品品牌数据的增删改查操作

查询: 查询所有数据

添加: 添加品牌

修改: 根据id修改

删除: 根据id删除

技巧:

alt + 鼠标左键,整列编辑

alt + Insert可以批量导入构造函数、get方法、set方法

操作步骤

1, 获取Connection

2, 定义SQL

3, 获取PreparedStatement对象

4, 设置参数

5, 执行SQL

6, 处理结果:List<Brand>

7, 释放资源

源代码

package local.content.example;import java.io.FileInputStream;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import local.content.pojo.Brand;
import org.junit.jupiter.api.Test;import javax.sql.DataSource;
import java.sql.Connection;
/*** 测试用例* 品牌数据的增、删、改、查操作*/
public class BrandTest {public static void main(String[] args){BrandTest test1 = new BrandTest();// 测试查询所有品牌信息方法try {test1.testSelectDB();} catch (Exception e) {e.printStackTrace();}// 测试添加品牌信息方法try {test1.testAddBrand();} catch (Exception e) {e.printStackTrace();}// 测试删除品牌信息方法try {test1.testDeleteBrand(3);} catch (Exception e) {e.printStackTrace();}// 测试修改品牌信息方法try {test1.testUpdateBrand();} catch (Exception e) {e.printStackTrace();}}// 修改品牌信息方法@Testpublic void testUpdateBrand() throws Exception {//1, 获取Druid ConnectionProperties prop = new Properties();prop.load(new FileInputStream("jdbc01/src/main/resources/druid.properties"));DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);Connection connection = dataSource.getConnection();System.out.println(connection);//2, 编写SQL语句String sql = "update brand set brandName = ?, companyName = ?, order_id = ? where id = ?";//3, 执行SQL语句PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, "iphone");preparedStatement.setString(2, "苹果公司");preparedStatement.setInt(3, 10);preparedStatement.setString(4, "1");System.out.println(sql);int result = preparedStatement.executeUpdate();if(result > 0) {System.out.println("修改成功");} else {System.out.println("修改失败");}//4, 关闭连接preparedStatement.close();connection.close();}// 删除品牌信息方法@Testpublic void testDeleteBrand(int id) throws Exception {//1, 获取Druid ConnectionProperties prop = new Properties();prop.load(new FileInputStream("jdbc01/src/main/resources/druid.properties"));DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);Connection conn = dataSource.getConnection();//2, 编写SQL语句String sql = "delete from brand where id = ?";//3, 获取PreparedStatementPreparedStatement ps = conn.prepareStatement(sql);//4, 设置参数ps.setInt(1, 3);//5, 执行SQLint count = ps.executeUpdate();//6, 处理结果if (count > 0) {System.out.println("删除成功");} else {System.out.println("删除失败");//7, 释放资源ps.close();conn.close();}}// 添加品牌信息方法@Testpublic void testAddBrand() throws Exception {// 定义要新增的参数内容String brandName = "抖音";String company = "字节跳动";int ordered = 1000;//1, 获取Druid ConnectionProperties prop = new Properties();prop.load(new FileInputStream("jdbc01/src/main/resources/druid.properties"));DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);Connection connection = dataSource.getConnection();//2, 编写SQL语句String sql = "insert into brand (brandName, companyName, order_id) values (?, ?, ?)";//3, 获取PreparedStatementPreparedStatement preparedStatement = connection.prepareStatement(sql);//4, 给占位符赋值preparedStatement.setString(1, brandName);preparedStatement.setString(2, company);preparedStatement.setInt(3, ordered);//5, 执行SQL语句int i = preparedStatement.executeUpdate();//6, 处理结果if (i > 0) {System.out.println("添加成功");} else {System.out.println("添加失败");//7, 释放资源preparedStatement.close();connection.close();}}// 查询品牌信息@Testpublic void testSelectDB() throws Exception {//1, 获取Druid ConnectionProperties prop = new Properties();prop.load(new FileInputStream("jdbc01/src/main/resources/druid.properties"));DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);Connection conn = dataSource.getConnection();//2, 定义SQLString sql = "select * from brand where id >= ?";//3, 获取PreparedStatement对象PreparedStatement pstmt = conn.prepareStatement(sql);//4, 设置参数pstmt.setInt(1,1);//5, 执行SQLResultSet rs = pstmt.executeQuery();//6, 处理结果:List<Brand>List<Brand> brands = new ArrayList<>();Brand brand = null;while(rs.next()){int id = rs.getInt("id");String brandName = rs.getString("brandName");String companyName = rs.getString("companyName");int ordered = rs.getInt("order_id");brand = new Brand(id,brandName,companyName,ordered);brands.add(brand);}System.out.println(brands);//7, 释放资源rs.close();pstmt.close();conn.close();}
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • css总结(记录一下...)
  • 管理员权限一键启动:Run-Command让高权限操作更简单
  • 在启智社区使用MindFormers本地部署大模型(未解决)
  • 海外云手机——跨国业务的高效工具
  • Day8 | Java框架 | Maven
  • 计算几何学习
  • python学习——对无人机影像有RGB转换到HSV
  • ecmascript和javascript的区别
  • leetcode hot100_part4_子串
  • 智能听诊器:打造宠物个性化健康生活
  • 云手机哪一款好用?手游专用云手机一览!VMOS云手机
  • Flask 第四课 -- 基本概念
  • 决策树模型的可解释性
  • 122.rk3399 uboot(2017.09) 源码分析2-initf_dm(2024-09-09)
  • 5--SpringBoot、Mybatis
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • DataBase in Android
  • Electron入门介绍
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java应用性能调优
  • MySQL的数据类型
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Promise面试题,控制异步流程
  • python 装饰器(一)
  • Quartz初级教程
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 包装类对象
  • 订阅Forge Viewer所有的事件
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 三分钟教你同步 Visual Studio Code 设置
  • 删除表内多余的重复数据
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 硬币翻转问题,区间操作
  • MyCAT水平分库
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # linux 中使用 visudo 命令,怎么保存退出?
  • ###C语言程序设计-----C语言学习(3)#
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (07)Hive——窗口函数详解
  • (Java)【深基9.例1】选举学生会
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (六)Flink 窗口计算
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .net framework 4.8 开发windows系统服务
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET值类型变量“活”在哪?