Spring JDBC
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发。它是在原生态JDBC上面的一层简单的封装,都提供了一些一用的接口,操纵者不会管理连接的创建、关闭。你只需要实现Spring提供的回调类。
如何产生
是因为JDBC的操作过程比较烦索,并且操作步骤大多相对固定,所以很多框架都对其进行了封装与优化。其中著名的Spring框架也对JDBC做了简单封装。
特点:
Spring框架提供了一个JdbcTemplate类简化JDBC的开发,它的特点是:简单、方便,这个技术俗称Spring JDBC技术。
作用:
- Spring JDBC技术中最为核心的类是JdbcTemplate类。
- JdbcTemplate类负责数据库资源管理和错误处理,大大简化了开发人员对数据库的操作,使得开发人员可以从繁琐的数据库操作中解脱出来,从而将更多精力投入到编写业务逻辑当中去。
操作流程:
-
导入jar包
-
创建JDBCTemplate对象。依赖于数据源DataSource
jdbcTemplate template = new jdbcTemplate(ds);
-
调用JDBCTemplate 的方法来完成CRUD的操作
-
JdbcTemplate主要提供以下三种类型的方法
- executeXxx() : 执行任何SQL语句,对数据库、表进行新建、修改、删除操作
- updateXxx() : 执行新增、修改、删除等语句
- queryXxx() : 执行查询相关的语句
-
queryForMap( ):查询结果将结果集封装map集合
注意:这个方法查询的结果集长度只能是1 -
queryForList( ):查询结果将结果集封装为List集合
注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中 -
query( ):查询结果,将结果封装为JAVABean对象
注意:query的参数:RowMapper -
一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
-
queryForObject( ):查询结果,将结果封装为对象。
注意:一般用于聚合函数的查询
实施流程:
- 获取jar包并复制全部导入项目:
https://pan.baidu.com/s/1_US7SlifA1YLZMtNp-ijSA
提取码:wv6q
- 所有jar包-右键-添加到Add As Library下
- 封装JDBCUtils工具类-加载配置文件,获取数据源。代码如下:
public class JDBCUtils {
//定义成员变量DataSource
private static DataSource ds;
static {
try {
//1.加载配文件
Properties pro = new Properties();
//链式编程,通过类加载器来,获取配置文件
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid-driver.properties"));
//2.获取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 throwables) {
throwables.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement stmt, Connection conn){
if (rs!=null){
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (stmt!=null){
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
/*
获取连接池
*/
public static DataSource getDataSource(){
return ds;
}
}
- 主函数代码-执行更新操作-调用工具类来获取配置文件和数据源连接:
public static void main(String[] args) {
//1.导入jar包
//2.创建jdbcTemplate对象,简化了开发的步骤
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
//3.调用方法
String sql = "update user set username='李四' where id =?";
int count = template.update(sql,3);
System.out.println(count);
}