Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。 JdbcTemplate 是在JDBC API基础上提供了更抽象的封装,并提供了基于方法注解的事务管理能力。 通过使用SpringBoot自动配置功能并代替我们自动配置beans. 在maven项目的pom.xml中,我们需要增加spring-boot-starter-jdbc模块。
1
2
3
4
|
<
dependency
>
<
groupId
>org.springframework.boot</
groupId
>
<
artifactId
>spring-boot-starter-jdbc</
artifactId
>
</
dependency
>
|
在pom.xml文件中引入之后,我们如果想在类中使用jdbcTemplate,需在类中加入如下代码
1
2
|
@Resource
private
JdbcTemplate jdbcTemplate;
|
关于在这里不用Autowired引入 而用 Resource 的区别请读者自行谷歌或百度,在这里不在累述,见谅。
二、实现代码
编写com.kfit.test.dao.DemoDao 数据库操作类:
DAO层
1
2
3
4
5
6
7
8
9
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
|
package
com.kfit.test.dao;
import
javax.annotation.Resource;
import
org.springframework.jdbc.core.BeanPropertyRowMapper;
import
org.springframework.jdbc.core.JdbcTemplate;
import
org.springframework.jdbc.core.RowMapper;
import
org.springframework.stereotype.Repository;
import
com.kfit.test.bean.Demo;
/**
* 使用JdbcTemplate操作数据库.
* @author V型知识库 www.vxzsk.com
*
*/
@Repository
publicclass DemoDao {
@Resource
private
JdbcTemplate jdbcTemplate;
/**
* 通过id获取demo对象.
* @param id
* @return
*/
public
Demo getById(
long
id){
String sql =
"select *from Demo where id=?"
;
RowMapper<Demo> rowMapper =
new
BeanPropertyRowMapper<Demo>(Demo.
class
);
returnjdbcTemplate.queryForObject(sql, rowMapper,id);
}
}
|
service层 com.kfit.test.service.DemoService :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package
com.kfit.test.service;
import
javax.annotation.Resource;
import
org.springframework.stereotype.Service;
import
com.kfit.test.bean.Demo;
import
com.kfit.test.dao.DemoDao;
import
com.kfit.test.dao.DemoRepository;
/**
* 提供Demo服务类.
* @author Administrator
*
*/
@Service
public
class
DemoService {
@Resource
private
DemoRepository demoRepository;
@Resource
private
DemoDao demoDao;
public
void
save(Demo demo){
demoRepository.save(demo);
}
public
Demo getById(
long
id){
//demoRepository.findOne(id);//在demoRepository可以直接使用findOne进行获取.
return
demoDao.getById(id);
}
}
|
controller层 com.kfit.test.web.Demo2Controller :
1
2
3
4
5
6
7
8
9
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
|
package
com.kfit.test.web;
import
javax.annotation.Resource;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController;
import
com.kfit.test.bean.Demo;
import
com.kfit.test.service.DemoService;
@RestController
@RequestMapping
(
"/demo2"
)
publicclass Demo2Controller {
@Resource
private
DemoService demoService;
/**
* 测试保存数据方法.
* @return
*/
@RequestMapping
(
"/save"
)
public
String save(){
Demo d =
new
Demo();
d.setName(
"Angel"
);
demoService.save(d);
//保存数据.
return
"ok.Demo2Controller.save"
;
}
//地址:http://127.0.0.1:8080/demo2/getById?id=1
@RequestMapping
(
"/getById"
)
public
Demo getById(longid){
returndemoService.getById(id);
}
}
|
三,启动项目测试效果
1,启动项目工程,在浏览器中输入 http://127.0.0.1:8080/demo2/getById?id=1 界面输出数据
1
2
3
4
|
{
id:
1
,
name:
"Angel"
}
|
前提是你的数据库中有id=1的数据了,不然会报错的,异常如下
1
|
org.springframework.dao.EmptyResultDataAccessException
|