发布时间: 2020-06-28 16:32:00
【Java技术培训】SpringBoot整合JDBC
一、 JDBC简介
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
二、 使用JDBC操作数据库的基本步骤
加载驱动。
建立链接
创建数据库操作对象
发送sql语句
解析sql语句
参数解析
资源回收
通过上面的执行流程使用JDBC来操作数据库是比较复杂的。
SpringBoot提供了对JDBC封装的启动器包,简化了JDBC的开发流程,
三、 在SpringBoot项目中引入JDBC依赖实现对数据库的操作
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
# 配置连接数据库
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
username: root
password: 123456aB3. 编写与数据库对应的实体类@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用于查询单条记录返回结果
l jdbcTemplate.query用于查询结果列表
l BeanPropertyRowMapper可以将数据库字段的值向对象映射,满足驼峰标识也可以自动映射。@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 //事务管理 当出现异常时,事务回滚,数据不会插入到数据库中
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. 编写单元测试@SpringBootTest
@Slf4j
class SpringbootjdbcApplicationTests {
private Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@Resource
TbUserService tbUserService;
@Resource
DataSource dataSource;
//获取数据源
@Test
public void getDataSource() throws SQLException {
log.info("获取到的数据源是:{}",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);
}
}
上一篇: 【人工智能】机器学习训练方法—梯度下降