JDBC規範
java.sql和javax.sql兩個包中的類與接口(天龍八部):
DataSource:數據源
DriverManager:驅動管理
Driver:JDBC驅動
Connection:數據庫連接
Statement:語句,執行SQL
PrepareStatement:預編譯語句,性能更好
CallableStatement:調用存儲過程
ResultSet:結果集,封裝了多條記錄JDBC數據庫連接池/Connection Pool
DBCP:apache tomcat內置
c3p0:hibernate
光-HikariCP:spring boot
Spring Boot
Spring Framework:核心
IoC容器:
Spring core
Spring bean
Spring context
Spring el
AOP編程:後繼
Spring aop
Spring Data:
Spring Data
Spring Data JDBC
Spring Data JPA
Spring Data MongoDB/Redis
Spring Data....
Spring MVC
MVC 架構模式:使用控制器實現模型與視圖的結藕(分離)
基於Java Web技術中 Servlet/JSP 規範
Spring Security
集成其他技術
爲了讓小夥伴更快的 掌握JDBC與Spring Data JDBC之間的區別,上代碼!!!
該工程所需要的依賴
工程目錄:
數據庫dept表的數據:
application.properties
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jpa?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Dept.java
package com.newer.jdbc;
/**
* 實體類
* @author Admin
*
*/
public class Dept {
int id;
String title;
String loc;
public Dept() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
@Override
public String toString() {
return "Dept [id=" + id + ", title=" + title + ", loc=" + loc + "]";
}
}
DeptRepository.java
package com.newer.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
/**
* 數據訪問/DeptDao/DeptMapper
*
* 類或者接口
*
*
* @author Admin
*
*/
@Repository
public class DeptRepository {
@Autowired
JdbcTemplate jdbcTemplate;
/**
* 原來的JDBC
* @return
* @throws SQLException
*/
public List<Dept> findAll() throws SQLException {
String sql="select * from dept";
Connection conn=DriverManager.getConnection("");
Statement stat=conn.createStatement();
stat.execute(sql);
// 查詢獲得結果集
ResultSet rs= stat.executeQuery("");
List<Dept> list=new ArrayList<>();
while(rs.next()) {
int id=rs.getInt("id");
String title=rs.getString("title");
String loc=rs.getString("loc");
Dept dept=new Dept();
dept.id=id;
dept.title=title;
dept.loc=loc;
list.add(dept);
}
// 關閉連接
rs.close();
stat.close();
conn.close();
return list;
}
// 結果集記錄的一行,映射特定的對象
RowMapper<Dept> mapper=new RowMapper<Dept>() {
@Override
public Dept mapRow(ResultSet rs, int rowNum) throws SQLException {
Dept dept =new Dept();
dept.setId(rs.getInt("id"));
dept.setTitle(rs.getString("title"));
dept.setLoc(rs.getString("loc"));
return dept;
}
};
/**
* 2001
* 封裝了JDBC,覺得JDBC太繁瑣
* jdbcTemplate
* @return Dept對象構成的列表/結果集記錄行
*/
public List<Dept> findALL(){
return jdbcTemplate.query("select * from dept", mapper);
}
/**
* jdbcTemplate
* @param loc
* @return
*/
public List<Dept> findByLoc(String loc){
// sql語句
String sql="select * from dept where loc like ?";
// 參數
Object [] args= {loc};
// 執行查詢
return jdbcTemplate.query(sql,args, mapper);
}
public void remove(int id) {
String sql="delete "
+"from dept "
+"where id=? "
+ "and "
+"loc=? ";
jdbcTemplate.execute(sql);
}
}
HomeController.java
package com.newer.jdbc;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeController {
// 數據訪問的幾種方案
// 1.mybatis-mapper
// 2.JPA-repository
// 3.JDBC Template
// 4.JDBC
@Autowired
DeptRepository deptRepository;
@GetMapping("/")
public List<Dept> findAll(){
return deptRepository.findALL();
}
@GetMapping("/{loc}")
public List<Dept> find(@PathVariable String loc){
return deptRepository.findByLoc(loc);
}
}
接下來運行程序,然後可以通過URL去訪問數據庫dept表中的數據。
查詢dept表所有的數據
根據loc查詢dept表數據
關於 Spring Data JDBC與JDBC的區別就到這裏結束了,有問題的小夥伴留言!!!