DBCP-DBUtil

举报
brucexiaogui 发表于 2021/12/30 00:40:06 2021/12/30
【摘要】 DBCP-DBUtil 一、创建DBCP连接池 1、创建DBCP链接池配置文件:名称为 dbcp.properties      内容如下: driverClassName=com.mysql.jdbc.Driverusername=rootpassword=123456url=jdbc:my...

DBCP-DBUtil


一、创建DBCP连接池

1、创建DBCP链接池配置文件:名称为 dbcp.properties      内容如下:


  
  1. driverClassName=com.mysql.jdbc.Driver
  2. username=root
  3. password=123456
  4. url=jdbc:mysql://127.0.0.1:3306/long1?characterEncoding=UTF8
  5. maxActive=2

2、读取配置文件,创建 DataSource 连接池实例


  
  1. package com.test.dbcp;
  2. import java.sql.Connection;
  3. import java.util.Properties;
  4. import javax.sql.DataSource;
  5. import org.apache.commons.dbcp.BasicDataSourceFactory;
  6. public class DbcpDataSource {
  7. /*
  8. * 重点:创建一个DataSource
  9. * 步骤为:1、用Properties类读取配置文件。
  10. * 2、通过工厂类,读取这个Properties类获取的配置文件,创建出DataSource
  11. * DataSource作用:
  12. * 创建DataSource可以返回多个连接。可以实现dbutil简化操作数据库的流程。
  13. */
  14. //1、创建一个静态的datasource
  15. private static DataSource ds;
  16. //2、在静态代码块中,给ds赋值
  17. static{
  18. //读取资源文件
  19. try{
  20. Properties p = new Properties();
  21. p.load(DbcpDataSource.class.getClassLoader().getResourceAsStream("dbcp.properties"));
  22. //在dbcp中有一个工厂类,读取一个资源文件,创建一个datasource
  23. ds = BasicDataSourceFactory.createDataSource(p);
  24. System.out.println("创建DataSource为"+ds);
  25. }catch(Exception e){
  26. throw new RuntimeException(e);
  27. }
  28. }
  29. //提供一个方法用于获取整个datasource对象
  30. public static DataSource getDataSource(){
  31. return ds;
  32. }
  33. //提供一个方法,获取connection连接
  34. public static Connection getConnection(){
  35. Connection con = null;
  36. try{
  37. con = ds.getConnection();
  38. System.out.println("通过DataSource获取connection连接"+con);
  39. }catch(Exception e){
  40. e.printStackTrace();
  41. }
  42. return con;
  43. }
  44. }


二、DBUtil 操作数据库实例


  
  1. package com.test.ts;
  2. import java.sql.SQLException;
  3. import java.util.List;
  4. import javax.persistence.Version;
  5. import org.apache.commons.dbutils.QueryRunner;
  6. import org.apache.commons.dbutils.handlers.ArrayHandler;
  7. import org.apache.commons.dbutils.handlers.ArrayListHandler;
  8. import org.junit.Test;
  9. import com.test.dbcp.DbcpDataSource;
  10. public class DbutilTests {
  11. /*
  12. * dbutil向数据库新增数据
  13. */
  14. @Test
  15. public void add() throws SQLException{
  16. //1、申明QueryRunner对象执行SQL语句
  17. QueryRunner run1 = new QueryRunner(DbcpDataSource.getDataSource()); //申明对象,获取DataSource链接池
  18. //2、书写SQL字符串语句
  19. String sq1 = "INSERT INTO student(id,namee,sex,birth,department,address)"
  20. + "VALUES(3,'王思','男',1995,'英文系','山东沧州')";
  21. //3、执行sql语句
  22. int result1 = run1.update(sq1);
  23. System.out.println("新增数据库结果,更新了数据有:"+result1+"条");
  24. }
  25. /*
  26. * dbutil 修改数据库数据
  27. *
  28. */
  29. @Test
  30. public void update() throws SQLException{
  31. //1、申明QueryRunner对象执行SQL语句
  32. QueryRunner run2 = new QueryRunner(DbcpDataSource.getDataSource());//申明对象,获取DataSource连接池
  33. //2、书写SQL字符串语句
  34. String sq2 = "UPDATE student SET sex=? WHERE id=?";
  35. //3、执行SQL语句
  36. int result2 = run2.update(sq2, "男",16);
  37. System.out.println("更新数据库结果,更新了数据有:"+result2+"条");
  38. }
  39. /*
  40. * dbutil 删除数据库数据
  41. */
  42. @Test
  43. public void delete() throws SQLException{
  44. //1、申明QueryRunner对象执行SQL语句
  45. QueryRunner run3 = new QueryRunner(DbcpDataSource.getDataSource());//申明对象,获取DataSource连接池
  46. //2、书写SQL字符串语句(这个sql语句的作用是每次删除ID号最大的数据)
  47. String sq3 = "DELETE FROM student WHERE id IN "
  48. + "(SELECT a.id FROM "
  49. + "(SELECT MAX(id) id FROM student a WHERE id IN"
  50. + "(SELECT id FROM student b WHERE a.id=b.id ORDER BY id DESC)) a)";
  51. //3、执行SQL语句
  52. int result3 = run3.update(sq3);
  53. System.out.println("更新数据库结果,更新了数据有:"+result3+"条");
  54. }
  55. /*
  56. * dbutil 查询,将结果封装成Object对象,返回第一行数据
  57. */
  58. @Test
  59. public void query() throws SQLException{
  60. //1、申明QueryRunner对象执行SQL语句
  61. QueryRunner run = new QueryRunner(DbcpDataSource.getDataSource());//申明对象,获取DataSource链接池
  62. //2、查询
  63. String sq4 = "Select * from student";
  64. Object[] var = run.query(sq4, new ArrayHandler());
  65. if(var !=null){
  66. System.out.print("输出学生表查询的信息"+"\n");
  67. for(Object o :var){
  68. System.out.print(o+"\n");
  69. }
  70. }
  71. }
  72. /*
  73. * dbutil 查询 ,将结果封装成Object对象,返回所有的数据
  74. *
  75. */
  76. @Test
  77. public void query2() throws SQLException{
  78. //1、申明QueryRunner对象执行SQL语句
  79. QueryRunner run5 = new QueryRunner(DbcpDataSource.getDataSource());
  80. //2、书写sql语句
  81. String sq5 = "select * from student";
  82. //3、查询sql
  83. List<Object[]> list = run5.query(sq5, new ArrayListHandler());
  84. //4、遍历结果
  85. if(list!=null){
  86. for(Object[] os:list){
  87. for(Object o :os){
  88. System.out.println("ArrayListHandler()显示查询到的所有数据:"+o+"\t");
  89. }
  90. System.out.println("\n--------------------------------------------");
  91. }
  92. }
  93. }
  94. }


文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/78082718

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。