Java 学习笔记 三

Wesley13
• 阅读 762

一、Druid的简单使用

 1 try{
 2     //1.创建Druid数据源对象
 3     DruidDataSource dataSource = new DruidDataSource();
 4         
 5     //2.设置数据库连接信息
 6     dataSource.setDriverClassName("com.mysql.jdbc.Driver");
 7     dataSource.setUrl("jdbc:mysql://localhost:3306/dbtao?useSSL=false");
 8     dataSource.setUsername("root");
 9     dataSource.setPassword("");
10     //设置连接池初始化的连接个数
11     dataSource.setInitialSize(5);
12     
13     //3.从数据库连接池获取数据库连接
14     // 首次从连接池获取连接时,会初始化话连接池中的连接数
15     Connection conn = dataSource.getConnection();
16     PreparedStatement st = conn.prepareStatement("select * from emp");
17     ResultSet rs = st.executeQuery();
18     while(rs.next()){
19         System.out.println(rs.getString("ename"));
20     }
21     rs.close();
22     st.close();
23     //4.释放数据库连接,不是关闭数据库连接,而是放回了数据库连接池中
24     conn.close();
25     //5.关闭数据源
26     dataSource.close();
27 }catch(Exception e){
28     e.getStackTrace();
29 }

二、从工厂获取数据源

 1 try{
 2     //1.设置数据库连接信息
 3     /** Map 构造
 4         Map<String,String> map =new HashMap<>();
 5         map.put("driverClassName", "com.mysql.jdbc.Driver");
 6         map.put("url", "jdbc:mysql://localhost:3306/dbtao?useSSL=false");
 7         map.put("username", "root");
 8         map.put("password", "");
 9         DataSource dataSource = DruidDataSourceFactory.createDataSource(map);
10     */
11             
12     Properties prop = new Properties();
13     /**Properties 逐个设置
14         prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
15         prop.setProperty("url", "jdbc:mysql://127.0.0.1:3306/00?useSSL=false");
16         prop.setProperty("username", "root");
17         prop.setProperty("password", "123456");
18     */
19 
20     // 加载 Properties配置文件的内容到对象中
21     InputStream in = new FileInputStream("jdbc.properties");
22     prop.load(in);
23             
24     //2.初始化Druid数据源对象
25     DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
26             
27     Connection conn = dataSource.getConnection();
28     PreparedStatement st = conn.prepareStatement("select * from emp");
29     ResultSet rs = st.executeQuery();
30     while(rs.next()){
31         System.out.println(rs.getString("ename"));
32     }
33             
34     rs.close();
35     st.close();
36     //4.释放数据库连接,不是关闭数据库连接,而是放回了数据库连接池中
37     conn.close();
38 
39 }catch(Exception e){
40     e.getStackTrace();
41 }

三、封装 DBUtil

 1 import java.io.*;
 2 import java.sql.*;
 3 import java.util.*;
 4 import javax.sql.*;
 5 import com.alibaba.druid.pool.DruidDataSourceFactory;
 6 
 7 public class DBUtil {
 8     static DataSource dataSource;
 9     static {
10         try {
11             Properties prop = new Properties();
12             // 1.创建一个字节输入流的对象
13             InputStream in = new FileInputStream("jdbc.properties");
14             prop.load(in);
15             // 2.初始化数据源
16             dataSource = DruidDataSourceFactory.createDataSource(prop);
17             System.out.println("初始化数据源信息成功....");
18         } catch (Exception e) {
19             System.out.println("初始化数据源信息异常....");
20             e.printStackTrace();
21         }
22     }
23     /**
24      * 获取数据库连接池
25      */
26     public static DataSource getDataSource() {
27         return dataSource;
28     }
29     /**
30      * 获取数据库连接
31      */
32     public static Connection getConnection() {
33         Connection conn = null;
34         try {
35             conn = dataSource.getConnection();
36         } catch (SQLException e) {
37             e.printStackTrace();
38         }
39         return conn;
40     }
41     /**
42      * 释放数据库连接
43      */
44     public static void close(Connection conn,Statement st,ResultSet rs) {
45         if(rs!=null) {
46             try {
47                 rs.close();
48             } catch (SQLException e) {
49                 e.printStackTrace();
50             }
51         }
52         close(conn,st);
53     }
54     public static void close(Connection conn,Statement st) {
55         if(st!=null) {
56             try {
57                 st.close();
58             } catch (SQLException e) {
59                 e.printStackTrace();
60             }
61         }
62         close(conn);
63     }
64     public static void close(Connection conn) {
65         if(conn!=null) {
66             try {
67                 conn.close();
68             } catch (SQLException e) {
69                 e.printStackTrace();
70             }
71         }
72     }
73     public static void commit(Connection conn){
74         if(conn!=null) {
75             try {
76                 conn.commit();
77             } catch (SQLException e) {
78                 e.printStackTrace();
79             }
80         }
81     }
82     public static void rollback(Connection conn){
83         if(conn!=null) {
84             try {
85                 conn.rollback();
86             } catch (SQLException e) {
87                 e.printStackTrace();
88             }
89         }
90     }
91 }

jdbc.properties:

# database config
driverClassName = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/dbtao?useSSL=false
username = root
password = 123456
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这