用了jdbc连接池之后,我们会发现连接对象的复用性更高了,程序整体运行的性能也更高了。但是我们在做JDBC操作的时候还是比较麻烦,要定义sql,执行sql,设置参数,处理结果。

特别是当我们要做查询操作的时候,处理结果会变得相当麻烦。我们要把数据封装成对象,然后从结果集里获取数据,然后再创建对象,给对象属性赋值。这个过程很麻烦,都是体力活。我们只希望定义sql,然后把sql执行了,体力活不希望自己做。而JDBCtemplate就能帮我们做这些体力活。
druid+JDBCTemplate使用步骤:
1.导入JDBCTemplate jar包

JDBCTemplate依赖于数据库连接池,所以还需要druid相关的jar包或者是其他连接池jar包
如果使用的是 druid jdbcTemplate ,需要导入JDBCTemplate jar包5个+druid jar包1个 + 数据库驱动包
如果使用的是c3p0 jdbcTemplate ,需要导入JDBCTemplate jar包5个+c3p0 jar包2个 + 数据库驱动包
2.创建JDBCTemplate对象。依赖于数据源DataSource
*JdbcTemplate template = new JdbcTemplate(datasource)
3.调用JdbcTemplate的方法来完成CRUD的操作
*update():执行DML语句。增删改语句
*queryForMap():查询结果将结果集封装为map集合
*queryForList():查询结果将结果集封装为map集合
*query():查询结果,将结果封装为JavaBean对象
*queryForObject:查询结果,将结果封装为对象
示例代码如下:
1.工具类JDBCUtils:
package cn.xj.datasource.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; 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(); pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")); //获取连接池对象DataSource
ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } 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 getDateSource(){ return ds; } }
2.实现类JdbcTemplate_demo
package cn.xj.datasource.jdbctemplate; import cn.xj.datasource.utils.JDBCUtils; import org.springframework.jdbc.core.JdbcTemplate; public class JdbcTemplate_demo { public static void main(String[] args) { //创建JDBCTemplate对象
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDateSource()); //3.调用方法
String sql = "update account set balance = 5000 where id = ?"; int count = template.update(sql, 3); System.out.println(count); } }
