Jdbctemplate 所需Jar包以及入门程序样例
【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
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代表成功