进入正题之前先下载资源jar包
commons-dbutils-1.7.jar
druid-1.0.9.jar
使用durid技术可以避免链接繁琐的创建步骤,将java代码与数据库的连接变得更加简单。
最重要的是:使用数据库连接池可以在获得连接后,并不是释放连接而是将它保存在一个连接池中,等待再次调用。这大大加快了java代码与数据库之间数据交互的速度(主要是减少了连接所浪费的时间)。
使用方法也很简单:
1.创建一个properties配置文件
2.使用系统加载器配置文件
3.使用数据池工厂DruidDataSourceFactory.createDataSource();创建一个数据池
4.调用getconnection方法获得连接(此处附上 connector8.0后我一步步调试后的链接url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false)
上述连接解决了connector刚加的时区问题,还有数据库插入数据乱码的问题
亲测有效
//1.导入jar包
//2.导入properties文件并修改参数
Properties pro = new Properties();
InputStream resour = DruidTest01.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(resour);
//3.使用Druid工厂来创建连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//4.创建链接
Connection conn = ds.getConnection();
System.out.println(conn);
conn.close();
最后附加一个常用的JDBCUtils工具类的设置代码
public class JDBCUtils {
private static DataSource da;
static {//此处使用静态代码块加载配置文件(看一些大佬都是这样做的)
Properties properties = new Properties();
try {
properties.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
da = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
return da.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void close(Connection conn, PreparedStatement ps){
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
此jar包没有什么可多介绍的,主要是用于对数据库数据的增、删、改、查的一系列操作(相当于将自己写的代码后封装使用的样子)
使用方法简单:
1.创建queryrunner类
2.查找时多了一个resulthandler接口的定义(主要是用于存放结果集)
应用代码如下:
public class BaseDAO {
public long update(Connection conn,String sql,Object...args){
QueryRunner runner = new QueryRunner();
try {
return runner.update(conn, sql, args);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
public <T> T select(Connection conn,String sql,Class<T> clazz,Object...args) {
QueryRunner runner = new QueryRunner();
T result = null;
try {
result = runner.query(conn, sql, new BeanHandler<T>(clazz), args);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public <T> List<T> selectAll(Connection conn,String sql,Class<T> clazz,Object...args){
QueryRunner runner = new QueryRunner();
List<T> result=null;
try {
result = runner.query(conn, sql, new BeanListHandler<T>(clazz), args);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}