后台技术学习1--Druid数据库连接池
在之前CRUD操作时,需要重复写数据库连接代码,所以代码的复用性较低,修改的话也比较麻烦。使用数据库连接池技术相当于提前建立好连接,需要的时候取出,不需要时归还到池子即可。
使用Druid步骤
①导入Druid jar包
②配置 .preperties 文件,该文件可以放在任意目录之下
url=jdbc:mysql://localhost:3306/数据库名 username=root password=root driverClassName=com.mysql.jdbc.Driver #初始化连接数 initialSize=5 #最大连接数 maxActive=20 #最长等待时间 maxWait=2000
③工厂类获取连接池对象
④获取连接
import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.util.Properties; public class Demo1 { public static void main(String[] args) throws Exception { //加载配置文件 Properties pro = new Properties(); InputStream is = Demo1.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is); //获取连接池对象 DataSource ds = DruidDataSourceFactory.createDataSource(pro); //获取链接 Connection conn = ds.getConnection(); System.out.println(conn); } }
Druid工具类,JDBCUtils
package utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtils { private static DataSource ds; static { try { Properties pro = new Properties(); InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is); ds = DruidDataSourceFactory.createDataSource(pro); } catch (Exception e) { e.printStackTrace(); } } //获取链接 public static Connection getConnection() throws SQLException { return ds.getConnection(); } //释放资源 public static void close(Statement stmt,Connection conn){ if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(ResultSet rs,Statement stmt, Connection conn){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } //获取连接池 public static DataSource getDs(){ return ds; } }
Spring JDBC
Spring框架对JDBC的简单封装,提供了JDBCTemplate对象,简化了JDBC的开发
导入jar包,需要导入5个
Spring中的方法
update() | 执行DML语句 |
queryForMap() | 查询结果将结果封装为Map集合,返回结果长度为1 |
queryForList() | 查询结果将结果封装为List集合 |
query() | 查询结果,将结果封装为JavaBean对象 BeanPropertyRowMapper<>() |
queryForObject() | 查询结果,将结果封装为对象,适合聚合函数查询 |