全部課程
發(fā)布時(shí)間: 2020-06-28 16:32:00
【Java技術(shù)培訓(xùn)】SpringBoot整合JDBC?
一、 JDBC簡介
Java數(shù)據(jù)庫連接,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法。JDBC也是Sun Microsystems的商標(biāo)。我們通常說的JDBC是面向關(guān)系型數(shù)據(jù)庫的。
二、 使用JDBC操作數(shù)據(jù)庫的基本步驟
加載驅(qū)動(dòng)。
建立鏈接
創(chuàng)建數(shù)據(jù)庫操作對(duì)象
發(fā)送sql語句
解析sql語句
參數(shù)解析
資源回收
通過上面的執(zhí)行流程使用JDBC來操作數(shù)據(jù)庫是比較復(fù)雜的。
SpringBoot提供了對(duì)JDBC封裝的啟動(dòng)器包,簡化了JDBC的開發(fā)流程,
三、 在SpringBoot項(xiàng)目中引入JDBC依賴實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作
1. 引入必須的依賴包<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>2. 修改application.yml編寫配置文件server:
port: 9001
spring:
application:
name: springboot-jdbc
# 配置連接數(shù)據(jù)庫
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
username: root
password: 123456aB3. 編寫與數(shù)據(jù)庫對(duì)應(yīng)的實(shí)體類@Data
public class TbUser {
private Integer id;
private String username;
private String password;
private String role;
}
4. 編寫dao層
l jdbcTemplate.update適合于insert 、update和delete操作
l jdbcTemplate.queryForObject用于查詢單條記錄返回結(jié)果
l jdbcTemplate.query用于查詢結(jié)果列表
l BeanPropertyRowMapper可以將數(shù)據(jù)庫字段的值向?qū)ο笥成?,滿足駝峰標(biāo)識(shí)也可以自動(dòng)映射。@Repository
public class TbUserDao {
@Resource
private JdbcTemplate jdbcTemplate;
//保存用戶
public void saveUser(TbUser user){
jdbcTemplate.update("insert into tb_user(username,password,role) values (?,?,?)",
user.getUsername(),
user.getPassword(),
user.getRole());
}
//刪除用戶
public void deleteUserById(Integer id){
jdbcTemplate.update("delete from tb_user where id =?",new Object[]{id});
}
//更新用戶信息
public void updateUserById(TbUser tbUser){
jdbcTemplate.update("update tb_user set username = ?,password = ?,role = ? where id = ?",
tbUser.getUsername(),
tbUser.getPassword(),
tbUser.getRole(),
tbUser.getId());
}
//id查詢
public TbUser findUserById(Integer id){
return (TbUser) jdbcTemplate.queryForObject("select * from tb_user where id = ?", new Object[]{id}, new BeanPropertyRowMapper(TbUser.class));
}
//查詢所有
public List<TbUser> findAll(){
List<TbUser> tbUserList = jdbcTemplate.query("select * from tb_user", new BeanPropertyRowMapper<>(TbUser.class));
return tbUserList;
}
}
5. 編寫service層public interface TbUserService {
TbUser saveUser(TbUser tbUser);
void deleteUserById(Integer id);
void updateUserById(TbUser tbUser);
TbUser findUserById(Integer id);
List<TbUser> findAll();
}
6. 編寫serviceImpl@Service
public class TbUserServiceImpl implements TbUserService {
@Resource
TbUserDao tbUserDao;
@Override
@Transactional //事務(wù)管理 當(dāng)出現(xiàn)異常時(shí),事務(wù)回滾,數(shù)據(jù)不會(huì)插入到數(shù)據(jù)庫中
public TbUser saveUser(TbUser tbUser) {
tbUserDao.saveUser(tbUser);
//int a = 3/0;
return tbUser;
}
@Override
public void deleteUserById(Integer id) {
tbUserDao.deleteUserById(id);
}
@Override
public void updateUserById(TbUser tbUser) {
tbUserDao.updateUserById(tbUser);
}
@Override
public TbUser findUserById(Integer id) {
return tbUserDao.findUserById(id);
}
@Override
public List<TbUser> findAll() {
return tbUserDao.findAll();
}
}
7. 編寫單元測(cè)試@SpringBootTest
@Slf4j
class SpringbootjdbcApplicationTests {
private Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@Resource
TbUserService tbUserService;
@Resource
DataSource dataSource;
//獲取數(shù)據(jù)源
@Test
public void getDataSource() throws SQLException {
log.info("獲取到的數(shù)據(jù)源是:{}",dataSource);
Connection con = dataSource.getConnection();
log.info("獲取到的連接信息是:{}",con);
}
@Test
void contextLoads() {
}
@Test
void saveUserTest(){
TbUser tbUser = new TbUser();
tbUser.setUsername("qtd");
tbUser.setPassword("23456789");
tbUser.setRole("Oracle");
TbUser user = tbUserService.saveUser(tbUser);
log.info("操作成功,獲取到的信息是:{}",user);
}
@Test
void deleteUserByIdTest(){
tbUserService.deleteUserById(4);
}
@Test
void updateUserById(){
TbUser tbUser = new TbUser();
tbUser.setId(5);
tbUser.setUsername("qtdu");
tbUser.setPassword("23456789u");
tbUser.setRole("Oracleu");
tbUserService.updateUserById(tbUser);
}
@Test
void findUserById(){
TbUser user = tbUserService.findUserById(7);
log.info("操作成功,獲取到的信息是:{}",user);
}
}