天天看點

spring boot jdbctemplate使用

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;

@Repository

publicclass DemoDao {

@Resource

private

JdbcTemplate jdbcTemplate;

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;

@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;

@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

繼續閱讀