springboot整合jdbc
对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。
样例
1. 新建项目
增加web模块,jdbc api模块,mysql driver模块
<!-- jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2. yml配置文件连接数据库
spring:
datasource:
username: root
password: 18170021
url: jdbc:mysql://localhost:3306/books?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
3. 测试类
我们可以看到他默认给我们配置的数据源为 : class com.zaxxer.hikari.HikariDataSource
class Springboot07DataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() {
System.out.println(dataSource.getClass());
Connection connection = null;
try {
connection = dataSource.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
System.out.println(connection);
}
}
JdbcTemplate
有了数据源(com.zaxxer.hikari.HikariDataSource),然后可以拿到数据库连接(java.sql.Connection),有了连接,就可以使用原生的 JDBC 语句来操作数据库;即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC 做了轻量级的封装,即JdbcTemplate。
JdbcTemplate方法
- execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
- update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
- query方法及queryForXXX方法:用于执行查询相关语句;
- call方法:用于执行存储过程、函数相关语句。
测试方法
@RestController
public class JDBCController {
@Autowired
JdbcTemplate jdbcTemplate;
//没有实体类,数据库中的东西怎么获取 map
@GetMapping("/bookList")
public List<Map<String,Object>> bookList(){
String sql = "select * from book";
return jdbcTemplate.queryForList(sql);
}
@GetMapping("/addBook")
public String addBook(){
String sql = "insert into book(recID,title,book_type,price) values('B00003','概率论与数理统计','数学类',35.5) ";
jdbcTemplate.update(sql);
return "update - ok";
}
@GetMapping("/updateBook/{id}")
public String updateBook(@PathVariable("id") String id){
String sql = "update book set title=?,book_type=?,price=? where recID=?";
Object[] objects = new Object[4];
objects[0] = "概率论与数理统计";
objects[1] = "数学类";
objects[2] = 33.2;
objects[3] = id;
jdbcTemplate.update(sql,objects);
return "update - ok";
}
@GetMapping("deleteBook/{id}")
public String deleteBook(@PathVariable("id") String id){
String sql = "delete from book where recId=?";
jdbcTemplate.update(sql,id);
return "delete - ok";
}
}

浙公网安备 33010602011771号