JdbcTemplate这个模板类的巧妙
Posted 背时的哥哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JdbcTemplate这个模板类的巧妙相关的知识,希望对你有一定的参考价值。
文章目录
1.前言
之前学习spring时,对其中的JdbcTemplate没有进行太多研究,对数据库的操作基本都是通过MyBatis完成的,最近有碰到了这个“熟悉的陌生人”,那么就彻底熟悉熟悉吧。
2.我的理解
1.完成数据库的连接
public class JdbcUtil {
public static Connection getConn() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/lessontest";
String user = "root";
String password = "123";
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
2.书写JdbcTemplate类,完成对操作方法的封装(例子中只书写了部分的方法)
public class JdbcTemplate {
public int update(String sql,Object...args){
Connection conn = null ;
PreparedStatement stmt=null ;
try {
conn = JdbcUtil.getConn();//通过工具类获取数据库连接
stmt = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
//由于所有类型都是Object的子类,因而这个方法可以对任意参数赋值
stmt.setObject(i+1,args[i]);
}
int ret = stmt.executeUpdate();
// 5查看服务器的返回结果
return ret;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
public <U> List<U> queryList(String sql, RowMapper<U> rowMapper){
Connection conn = null;
Statement stmt =null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConn();
// 4输入SQL,执行SQL
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
// 5查看服务器的返回结果
List<U> list=new ArrayList<U>();
while (rs.next()) {
// 定位到行
U u= rowMapper.proccesRs(rs);//将查询结果进行封装
list.add(u);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
在此模板类中,将具体的sql语句与要传入的参数抽取出来作为方法参数,在使用时可根据不同的情况进行调用。
3.看看源码
1.首先将其注册到ioc容器中
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://127.0.1:3306/book"></property>
<property name="user" value="root"></property>
<property name="password" value="123"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
2.部分JdbcTemplate封装的方法
不难看出底层代码也是如此,将一切查询和更新所需的参数提取出来,通过调用方法传入参数,对所需参数进行赋值,以完成对数据库的操作。
3.当然了,源码自然有高深之处
就update()方法而言:
在此,spring添加了debug模式下的反馈信息以及数据库操作完成时的反馈信息。
以上是关于JdbcTemplate这个模板类的巧妙的主要内容,如果未能解决你的问题,请参考以下文章
Spring中支持JDBC的JdbcTemplate模板类的使用