目录

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相关推荐

  1. 满汉楼(德鲁伊连接池+DBUtils+DAO+Mysql)保姆级别分析+代码实现

    一:需求 1.完成一个酒店后台管理系统,当然只是模拟,在控制台就行模拟 2.实现管理人员的登录和酒店成本账单的查看,以及正常的点餐,结账和查看账单等等功能 二:实现的功能展示 1.用户登录(这里输入的 ...

  2. java 的德鲁伊连接池_德鲁伊连接池-Druid

    利用Druid连接池获得数据库连接(得到一个连接对象): package com.hk.utils; import com.alibaba.druid.pool.DruidDataSource; im ...

  3. java dbcp_Java dbcp连接池基本使用方法详解

    1.依赖api的使用 导入jar包 org.apache.commons commons-dbcp2 2.7.0 导入dbcp.properties配置文件 获取连接 protected void d ...

  4. java的dbcp使用方法_Java dbcp连接池的使用方法

    Java dbcp连接池的使用方法 发布时间:2020-10-31 00:59:26 来源:亿速云 阅读:89 作者:Leah 这篇文章将为大家详细讲解有关Java dbcp连接池的使用方法,文章内容 ...

  5. Java通过DBCP连接池方法实现JDBC代码案例

    Java和大数据系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等 ...

  6. springboot 配置德鲁伊连接池

    一.数据库连接池 1.1什么是数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免 ...

  7. 德鲁伊连接池(druid)

    文章目录 一.连接池 1.什么是连接池 2.为什么要用连接池 二.德鲁伊连接池(druid) 1.介绍 2.代码实操 一.连接池 1.什么是连接池 简单来说就是一组连接组成的一个池子(集合),称为连接 ...

  8. Druid 德鲁伊连接池技术

    Druid 德鲁伊连接池技术 步骤: 去官网去下载一个德鲁伊的jar -> druid-1.0.9.jar 定义配置文件:使用properties文件类型的,名字随便起 手动加载配置文件信息: ...

  9. JDBC——通过德鲁伊连接池连接Mysql

    步骤一:在java项目中导入jar包 德鲁伊连接池jar包https://download.csdn.net/download/m0_62642719/85360784步骤二:在src下创建配置文件: ...

最新文章

  1. The genome polishing tool POLCA makes fast and accurate corrections in genome assemblies
  2. 自己动手写一个印钞机 第二章
  3. Android(四)——View和ViewGroup
  4. BXUG第11期活动
  5. 第 132 章 Example
  6. 产品经理如何做好需求挖掘
  7. CSDN:如何获得C币
  8. 关于Sentaurus的日常(三)
  9. 简单使用触发器(详细) SQL触发器的使用及语法
  10. 如何降低和开发人员的bug沟通成本?
  11. 东风谷早苗 简单的水题
  12. PPT2016;插入视频,无法实现自动播放
  13. 为上次渲染的三角形添加颜色
  14. 使用Tensorflow训练一元线性模型
  15. 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节(2)
  16. itoa 头文件 linux,Linux中的itoa功能在哪里?
  17. J2EE进阶之javascript 四
  18. codevs——T3111 CYD啃骨头
  19. 访问者模式 (Visitor Pattern)
  20. 运营小红书账号的经验有哪些?这几个方面值得借鉴!

热门文章

  1. 艾美捷Annexin V-FITC凋亡检测试剂盒:简单、快速
  2. 网络游戏防沉迷系统7月16日起正式执行
  3. 虚拟机上网问题(设置NAT依然无法上网)
  4. java web QQ(五)
  5. bum报文_VXLAN 简介
  6. 2022-2028年中国玉米收获机行业发展模式分析及未来前景规划报告
  7. 奇迹服务器修改玛雅爆率,奇迹买S16单机版带S12版23补丁真实X店装备自定爆率刷怪GM网单...
  8. 【量化资料】东方证券-因子选股系列研究(全套,持续更新~)
  9. 计算机组装总结及心得50字,员工自我评价50字
  10. 用API函数设置颜色