1 import com.alibaba.druid.pool.DruidDataSource;
2 import com.alibaba.druid.pool.DruidDataSourceFactory;
3 import com.alibaba.druid.pool.DruidPooledConnection;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6
7 import java.sql.PreparedStatement;
8 import java.sql.ResultSet;
9 import java.sql.SQLException;
10 import java.util.Properties;
11
12 /**
13 * jdbc core api
14 *
15 * @author ysj 2019-10-18
16 */
17 public class JdbcUtils {
18 private static final Logger log = LoggerFactory.getLogger(JdbcUtils.class);
19
20 private static DruidDataSource dataSource;
21
22 static {
23 Properties dbProp = loadProperties("db.properties");
24 try {
25 dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(dbProp);
26 } catch (Exception e) {
27 log.error("数据库连接池创建失败");
28 e.printStackTrace();
29 }
30 }
31
32 /** 常用函数 */
33 public void local() {
34 try {
35 DruidPooledConnection connection = dataSource.getConnection();
36 connection.setAutoCommit(false);
37 PreparedStatement statement = connection.prepareStatement("select ...");
38 // sql中占位符?设置第一个参数值,index start with 1
39 statement.setString(1,"param1");
40
41 ResultSet resultSet = statement.executeQuery();
42 resultSet.next();
43 // get 结果集中对应列的值
44 resultSet.getString("field");
45
46 connection.commit();
47 connection.close();
48 } catch (SQLException e) {
49 e.printStackTrace();
50 }
51 }
52
53 /** 加载数据库配置 这里通过文件流加载数据库连接相关属性,可以有多种方式 */
54 private static Properties loadProperties(String path) {
55 return null; // 此处省略
56 }
57
58 /** 单例 */
59 public static synchronized JdbcUtils getInstance() {
60 return new JdbcUtils();
61 }
62 }