用了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 classJDBCUtils {//定义成员变量
private staticDataSource ds;static{try{//加载配置文件
Properties pro = newProperties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));//获取连接池对象DataSource
ds =DruidDataSourceFactory.createDataSource(pro);
}catch(IOException e) {
e.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
}//获取链接
public staticConnection getConnection() throws SQLException {returnds.getConnection();
}//释放资源
public static voidclose(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 voidclose(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 staticDataSource getDateSource(){returnds;
}
}
2.实现类JdbcTemplate_demo
package cn.xj.datasource.jdbctemplate;
import cn.xj.datasource.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;public classJdbcTemplate_demo {public static voidmain(String[] args) {//创建JDBCTemplate对象
JdbcTemplate template = newJdbcTemplate(JDBCUtils.getDateSource());//3.调用方法
String sql = "update account set balance = 5000 where id = ?";int count = template.update(sql, 3);
System.out.println(count);
}
}