Jdbctemplate 所需Jar包以及入门程序样例

2025-10-06 00:24:57 世界杯大力神杯

【JdbcTemplate是什么】

JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。常用方法

execute方法:可以用于执行任何SQL语句,一般用于执行DDL(数据库模式定义语言)语句;update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;query方法及queryForXXX方法:用于执行查询相关语句;

【为什么要使用jdbctemplate】

如果直接使用JDBC的话,需要我们加载数据库驱动、创建连接、释放连接、异常处理等一系列的动作,繁琐且代码看起来不直观。而使用 jdbctemplate 则无需关注加载驱动、释放资源、异常处理等一系列操作,我们只需要提供 sql 语句并且提取最终结果即可,大大方便我们编程开发。此外,Spring提供的JdbcTempate能直接数据对象映射成实体类,不再需要获取ResultSet去获取值、赋值等操作,提高开发效率;

【jdbctemplate常用方法】

jdbcTemplate主要提供的5类方法及使用:

(1)execute() 方法:可以执行任何SQL语句,一般用于执行DDL语句。

(2)update(sqlStr, 参数列表) 方法:用于执行新增、修改、删除等语句。

(3)batchUpdate() 方法:用于执行批处理相关语句,batchUpdate方法第二参数是一个元素为 Object[] 数组类型的 List 集合。

(4)query() 方法及 queryForXXX() 方法:用于执行查询相关语句,查询结果为基本数据类型或者是单个对象一般使用 queryForObject()

queryForInt():查询一行数据并返回 int 型结果。例子:jdbcTemplate.queryForInt("select count(*) from user")

queryForObject(sqlStr, 指定的数据类型, 参数列表):查询一行任何类型的数据,最后一个参数指定返回结果类型。例子:jdbcTemplate.queryForObject("selct count(*) from user", Integer.class)

queryForMap(sqlStr, 参数列表):查询一行数据并将该行数据转换为 Map 返回。将会将列名作为key,列值作为 value 封装成 map。当查询出来的行数大于1时会报错。例子:jdbcTemplate.queryForMap("select * from user where username = ?", "aaa");

List> queryForList(sqlStr, 参数列表):将查询结果集封装为 list 集合,该集合的每一条元素都是一个 map。

query(sqlStr, RowMapper对象, 参数列表):查询多行数据,并将结果集封装为元素是 JavaBean 的 list。(注意,指定的JavaBean的属性最好不要是基本类型,因为查询出来的结果可能是null,而null赋值为基本数据类型将会报错。比如int最好定义为Integer)

(5)call() 方法:用于执行存储过程、函数相关语句。

【你是怎么开始的呢?】

1、将下载的5个Jar包导入到项目中

2、编写代码所需的工具类JDBCUtils

package com.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;

/**

* 以下链接Druid的工具类

*/

@SuppressWarnings("all")

public class JDBCUtil {

//创建Datasource对象

private static DataSource ds;

static {

//创建Properties对象

Properties pro = new Properties();

try {

pro.load(JDBCUtil.class.getClassLoader().getResourceAsStream("druid.properties"));

ds = DruidDataSourceFactory.createDataSource(pro);

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 返回链接对象

*/

public static Connection getconnection() throws SQLException, SQLException {

return ds.getConnection();

}

/**

* 关闭流

*/

public static void close(Statement sta, Connection con){

if(sta != null){

try {

sta.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(con !=null){

try {

con.close();//归还连接

} catch (SQLException e) {

e.printStackTrace();

}

}

}

/**

* 关闭三个流

*/

public static void close(ResultSet rs, Statement sta, Connection con){

if(rs !=null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(sta !=null){

try {

sta.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(con !=null){

try {

con.close();//归还连接

} catch (SQLException e) {

e.printStackTrace();

}

}

}

/**

* 获取数据源

*/

public static DataSource getDatasource(){

return ds;

}

}

3、编写JDBCTemplate基本程序

package com.Jdbctemplate;

import com.Utils.JDBCUtil;

import org.springframework.jdbc.core.JdbcTemplate;

/**

* 以下程序是使用Jdbctemplate初级方法

*/

public class test {

public static void main(String[] args) {

//1、导入5个Jar包

//2、新建对象

JdbcTemplate jdbc = new JdbcTemplate(JDBCUtil.getDatasource());

//3、编写sql语句

String sql = "update emp set age = 88 where name=?";

//4、执行修改语句

int count = jdbc.update(sql, "ccc");

//5、打印输出

System.out.println(count);

}

}

4、运行程序,数字1代表成功