[JAVA]使用德鲁伊连接池和DAO方法完成对goods表的crud
目录
1.配置德鲁伊连接池的properties文件。
2.创建goods表,并插入数据[MySQL]。
3.创建德鲁伊数据库连接池的工具类。
4.创建Goods的domain层
5.创建BasicDAO(BasicDAO 是其他DAO的父类)。
6.创建GoodsDAO,继承BasicDAO。
7.通过crud测试goods表
8.测试结果
示意图
开发GoodsDAO和Goods,完成对goods表的crud。
1.配置德鲁伊连接池的properties文件。
#key=value
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc_db?rewriteBatchedStatements=true&serverTimezone=UTC&&useUnicode=true&characterEncoding=UTF-8
username=root
password=030522
#initial connection Size
initialSize=10
#min idle connecton size
minIdle=5
#max active connection size
maxActive=20
#max wait time (5000 mil seconds)
maxWait=5000
2.创建goods表,并插入数据[MySQL]。
DROP TABLE IF EXISTS goods;
CREATE TABLE goods(id INT PRIMARY KEY,goods_name VARCHAR(10),price DOUBLE);
INSERT INTO goods VALUES
(1,'华为',6000),
(2,'苹果',7000),
(3,'三星',5000),
(4,'vivo',NULL);
SELECT * FROM goods;
3.创建德鲁伊数据库连接池的工具类。
package com.hhb.dao_.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;//基于德鲁伊数据库连接池的工具类
public class JDBCUtilsByDruid {private static DataSource ds;//在静态代码块完成ds初始化static {Properties properties = new Properties();try {properties.load(new FileInputStream("src\\druid.properties"));ds = DruidDataSourceFactory.createDataSource((properties));} catch (IOException e) {throw new RuntimeException(e);} catch (Exception e) {throw new RuntimeException(e);}}//编写getConnection方法public static Connection getConnection() throws SQLException {return ds.getConnection();}//关闭连接,在数据库连接池技术中,close不是真的断掉连接,而是把使用的Connection对象放回连接池public static void close(ResultSet resultSet, Statement statement, Connection connection) throws Exception {if (resultSet != null) {resultSet.close();}if (statement != null) {statement.close();}if (connection != null) {connection.close();}}
}
4.创建Goods的domain层
package com.hhb.dao_.domain;public class Goods {private Integer id;private String goods_name;private double price;public Goods(){//一定要给一个无参构造器[反射]}public Goods(Integer id, String goods_name, double price) {this.id = id;this.goods_name = goods_name;this.price = price;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getGoods_name() {return goods_name;}public void setGoods_name(String goods_name) {this.goods_name = goods_name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Goods{" +"id=" + id +", goods_name='" + goods_name + '\'' +", price=" + price +'}';}
}
5.创建BasicDAO(BasicDAO 是其他DAO的父类)。
package com.hhb.dao_.dao;import com.hhb.jdbc.dataSource.JDBCUtilsByDruid;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;//BasicDAO 是其他DAO的父类
public class BasicDAO<T> {//泛型指定具体的类型private QueryRunner qr = new QueryRunner();//开发通用的dml方法,针对任意的表public int update(String sql, Object... parameters) throws Exception {Connection connection = null;try {connection = JDBCUtilsByDruid.getConnection();int update = qr.update(connection, sql, parameters);return update;} catch (SQLException e) {throw new RuntimeException(e);//将编译异常转化为运行异常} finally {JDBCUtilsByDruid.close(null, null, connection);}}//返回多个对象(即查询的结果是多行),针对任意表/** sql :sql 语句,可以有?* clazz: 传入一个类的Class 对象 比如 Actor.class* parameters 传入? 的具体值,可以是多个* return 根据Actor.class 返回对应的ArrayList集合*/public List<T> queryMulti(String sql,Class<T> clazz,Object... parameters) throws Exception {Connection connection=null;try {connection = JDBCUtilsByDruid.getConnection();return qr.query(connection,sql,new BeanListHandler<T>(clazz),parameters);} catch (SQLException e) {throw new RuntimeException(e);//将编译异常转化为运行异常} finally {JDBCUtilsByDruid.close(null, null, connection);}}//查询单行结果的通用方法public T querySingle(String sql,Class<T> clazz,Object... parameters) throws Exception {Connection connection=null;try {connection = JDBCUtilsByDruid.getConnection();return qr.query(connection,sql,new BeanHandler<T>(clazz),parameters);} catch (SQLException e) {throw new RuntimeException(e);//将编译异常转化为运行异常} finally {JDBCUtilsByDruid.close(null, null, connection);}}//返回单值的方法public Object queryscalar(String sql,Object... parameters) throws Exception {Connection connection=null;try {connection = JDBCUtilsByDruid.getConnection();return qr.query(connection,sql,new ScalarHandler(),parameters);} catch (SQLException e) {throw new RuntimeException(e);//将编译异常转化为运行异常} finally {JDBCUtilsByDruid.close(null, null, connection);}}
}
6.创建GoodsDAO,继承BasicDAO。
package com.hhb.dao_.dao;import com.hhb.dao_.domain.Goods;public class GoodsDAO extends BasicDAO<Goods>{//1.拥有BasicDAO的方法//2.根据业务需求,可以编写特有的方法,}
7.通过crud测试goods表
package com.hhb.dao_.test;import com.hhb.dao_.dao.GoodsDAO; import com.hhb.dao_.domain.Goods;import org.junit.Test;import java.util.List;public class GoodsTestDAO {//测试GoodsDAO 对goods表的crud操作@Testpublic void TestGoodsDAO() throws Exception {GoodsDAO goodsDAO = new GoodsDAO();//1.查询List<Goods> goods1 = goodsDAO.queryMulti("select * from goods where id >= ?", Goods.class, 1);System.out.println("查询结果");for (Goods goods : goods1) {System.out.println(goods);}//查询单行记录Goods goods = goodsDAO.querySingle("select * from goods where id=?", Goods.class, 3);System.out.println("查询单行记录");System.out.println(goods);//查询单行单值Object o = goodsDAO.queryscalar("select goods_name from goods where id=?", 2);System.out.println("查询单行单值");System.out.println(o);//4.dml操作 insert,update,deleteint update = goodsDAO.update("insert into goods values(?,?,?)", 5, "小米", 4000);System.out.println(update>0?"执行成功":"执行未影响到表");} }
8.测试结果
[JAVA]使用德鲁伊连接池和DAO方法完成对goods表的crud相关推荐
- 满汉楼(德鲁伊连接池+DBUtils+DAO+Mysql)保姆级别分析+代码实现
一:需求 1.完成一个酒店后台管理系统,当然只是模拟,在控制台就行模拟 2.实现管理人员的登录和酒店成本账单的查看,以及正常的点餐,结账和查看账单等等功能 二:实现的功能展示 1.用户登录(这里输入的 ...
- java 的德鲁伊连接池_德鲁伊连接池-Druid
利用Druid连接池获得数据库连接(得到一个连接对象): package com.hk.utils; import com.alibaba.druid.pool.DruidDataSource; im ...
- java dbcp_Java dbcp连接池基本使用方法详解
1.依赖api的使用 导入jar包 org.apache.commons commons-dbcp2 2.7.0 导入dbcp.properties配置文件 获取连接 protected void d ...
- java的dbcp使用方法_Java dbcp连接池的使用方法
Java dbcp连接池的使用方法 发布时间:2020-10-31 00:59:26 来源:亿速云 阅读:89 作者:Leah 这篇文章将为大家详细讲解有关Java dbcp连接池的使用方法,文章内容 ...
- Java通过DBCP连接池方法实现JDBC代码案例
Java和大数据系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等 ...
- springboot 配置德鲁伊连接池
一.数据库连接池 1.1什么是数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免 ...
- 德鲁伊连接池(druid)
文章目录 一.连接池 1.什么是连接池 2.为什么要用连接池 二.德鲁伊连接池(druid) 1.介绍 2.代码实操 一.连接池 1.什么是连接池 简单来说就是一组连接组成的一个池子(集合),称为连接 ...
- Druid 德鲁伊连接池技术
Druid 德鲁伊连接池技术 步骤: 去官网去下载一个德鲁伊的jar -> druid-1.0.9.jar 定义配置文件:使用properties文件类型的,名字随便起 手动加载配置文件信息: ...
- JDBC——通过德鲁伊连接池连接Mysql
步骤一:在java项目中导入jar包 德鲁伊连接池jar包https://download.csdn.net/download/m0_62642719/85360784步骤二:在src下创建配置文件: ...
最新文章
- The genome polishing tool POLCA makes fast and accurate corrections in genome assemblies
- 自己动手写一个印钞机 第二章
- Android(四)——View和ViewGroup
- BXUG第11期活动
- 第 132 章 Example
- 产品经理如何做好需求挖掘
- CSDN:如何获得C币
- 关于Sentaurus的日常(三)
- 简单使用触发器(详细) SQL触发器的使用及语法
- 如何降低和开发人员的bug沟通成本?
- 东风谷早苗 简单的水题
- PPT2016;插入视频,无法实现自动播放
- 为上次渲染的三角形添加颜色
- 使用Tensorflow训练一元线性模型
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节(2)
- itoa 头文件 linux,Linux中的itoa功能在哪里?
- J2EE进阶之javascript 四
- codevs——T3111 CYD啃骨头
- 访问者模式 (Visitor Pattern)
- 运营小红书账号的经验有哪些?这几个方面值得借鉴!
热门文章
- 艾美捷Annexin V-FITC凋亡检测试剂盒:简单、快速
- 网络游戏防沉迷系统7月16日起正式执行
- 虚拟机上网问题(设置NAT依然无法上网)
- java web QQ(五)
- bum报文_VXLAN 简介
- 2022-2028年中国玉米收获机行业发展模式分析及未来前景规划报告
- 奇迹服务器修改玛雅爆率,奇迹买S16单机版带S12版23补丁真实X店装备自定爆率刷怪GM网单...
- 【量化资料】东方证券-因子选股系列研究(全套,持续更新~)
- 计算机组装总结及心得50字,员工自我评价50字
- 用API函数设置颜色