咱们上次对执行增删改的操作进行分析以后,这次则来对查询进行流程梳理把~
源码解析
接下来则来对JdbcTemplate的query方法进行一个源码解析吧~
eg:
List<User> users = template.query(sql,new BeanPropertyRowMapper<User>(User.class),params.toArray())
这里我们来分析下为什么返回值是List<User>
第一步是创建JdbcTemplate对象,传入数据源,进入构造方法查看
JdbcTemplate.java
[Java] 纯文本查看 复制代码
1
2
3
4
|
public JdbcTemplate(DataSource dataSource) {
setDataSource(dataSource);
afterPropertiesSet();
}
|
JdbcAccessor.java
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
private DataSource dataSource;
private boolean lazyInit = true ;
public void setDataSource(DataSource dataSource) {
this .dataSource = dataSource;
}
public DataSource getDataSource() {
return this .dataSource;
}
public boolean isLazyInit() {
return this .lazyInit;
}
public void afterPropertiesSet() {
if (getDataSource() == null ) {
throw new IllegalArgumentException( "Property 'dataSource' is required" );
}
if (!isLazyInit()) {
getExceptionTranslator();
}
}
|
通过上面代码来看说白了就是用来初始化我们JdbcTemplate对象的,当然也做了不少操作,比如要判断是够有提供dataSource对象
第二步是调用对应的query方法,把sql和参数传入最后接收响应结果
创建完我们的jdbcTemplate对象后那么接下来才真正的进入到我们执行查询的query方法中~
JdbcTemplate.java
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|