java druid mysql连接池_java使用Druid连接池连接mysql
1.先在mysql創建需要的數據庫和表
use book;
create table t_user(
`id`intprimary key auto_increment,
`username` varchar(20) not nullunique,
`password` varchar(32) not null,
`email` varchar(200)
);
insert into t_user(`username`,`password`,`email`) values(‘admin‘,‘admin‘,‘admin@atguigu.com‘);
select* from t_user;
2.編寫與數據庫表對應的javaBean對象
packagecom.atguigu.pojo;//數據庫表對應的javaBean對象
public classUser {private intid;privateString username;privateString password;privateString email;publicUser() {}public User(intid, String username, String password, String email) {super();this.id =id;this.username =username;this.password =password;this.email =email;
}public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}publicString getEmail() {returnemail;
}public voidsetEmail(String email) {this.email =email;
}
@OverridepublicString toString() {return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + "]";
}
}
View Code
3.編寫工具類JdbcUtil
3.1先導入需要的jar包(數據庫和連接池需要):
3.2、在src源碼目錄下編寫jdbc.properties屬性配置文件
initialSize=5
maxActive=10
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf8
username=root
password=123456
注意:
1.如果你在url這么沒有添加“?characterEncoding=utf8”,有可能會出現以下錯誤:
Unknown initial character set index ‘255‘ received from server. Initial client character set can be forced via the ‘characterEncoding‘ property.
從服務器收到的未知初始字符集索引“255”。初始客戶端字符集可以通過“字符編碼”屬性強制設置。
2、如果你連接的mysql數據庫是8.0及以上的,driver要記得改為:‘com.mysql.cj.jdbc.Driver‘,否則會報錯。詳細看https://blog.csdn.net/superdangbo/article/details/78732700
3.3、編寫數據庫工具類JdbcUtil
Druid數據庫連接池有兩種使用方式:
1.直接設置數據源參數并建立連接池
2.Properties配置數據源,讀取數據源并建立連接池
方式一:直接設置數據源參數并建立連接池
packagecom.atguigu.util;importjava.io.IOException;importjava.io.InputStream;importjava.sql.SQLException;importjava.util.Properties;importcom.alibaba.druid.pool.DruidDataSource;importcom.alibaba.druid.pool.DruidDataSourceFactory;importjava.sql.Connection;public classJDBCUtil {private staticDruidDataSource dataSource;static{try{
dataSource= newDruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setInitialSize(5);
dataSource.setMaxActive(10);
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}/*** 獲取數據庫連接池中的連接
*@return如果返回null,說明連接失敗,有值就是獲取連接成功*/
public staticConnection getConnection() {
Connection conn=null;try{
conn=(Connection)dataSource.getConnection();
}catch(Exception e) {
e.printStackTrace();
}returnconn;
}/*** 關閉連接,放回數據庫連接池
*@paramconn*/
public static voidclose(Connection conn) {if(conn!=null) {try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
方式二:Properties配置數據源,讀取數據源并建立連接池(Properties文件看3.2)
packagecom.atguigu.util;importjava.io.IOException;importjava.io.InputStream;importjava.sql.SQLException;importjava.util.Properties;importcom.alibaba.druid.pool.DruidDataSource;importcom.alibaba.druid.pool.DruidDataSourceFactory;//import com.mysql.jdbc.Connection;
importjava.sql.Connection;public classJdbcUtil {private staticDruidDataSource dataSource;static{try{
Properties properties=newProperties();//讀取jdbc.properties屬性配置文件
InputStream is=JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");//從流中記載數據
properties.load(is);//創建數據庫連接池
dataSource=(DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}/*** 獲取數據庫連接池中的連接
*@return如果返回null,說明連接失敗,有值就是獲取連接成功*/
public staticConnection getConnection() {
Connection conn=null;try{
conn=(Connection) dataSource.getConnection();
}catch(Exception e) {
e.printStackTrace();
}returnconn;
}/*** 關閉連接,放回數據庫連接池
*@paramconn*/
public static voidclose(Connection conn) {if(conn!=null) {try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
3.4、JdbcUtil測試
packagecom.atguigu.test;importorg.junit.Test;importcom.alibaba.druid.util.JdbcUtils;importcom.atguigu.util.JdbcUtil;//import com.mysql.jdbc.Connection;
importjava.sql.Connection;public classJdbcUtilsTest {public static voidmain(String []args) {
Connection connection=JdbcUtil.getConnection();
System.out.println(connection);
JdbcUtils.close(connection);
}
}
結果:
最后:我遇到的坑有無數個,我搞了一下午,才弄好,哭泣。。。。
1、如果你遇到錯誤:Cause: java.sql.SQLException: Unknown initial character set index ‘255‘ received from server.
2、如果遇到Client does not support authentication protocol requested?by?server; consider upgrading MySQL?client這個錯誤,有可能需要把用戶密碼登錄的加密規則還原成mysql_native_password這種加密方式。如何修改可以參考這篇文章:https://blog.csdn.net/numberseven7/article/details/99548745
總結
以上是生活随笔為你收集整理的java druid mysql连接池_java使用Druid连接池连接mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 桌面级3D打印机使用教程
- 下一篇: pipe 半双工_pipe 半双工_Li