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的区别就到这里结束了,有问题的小伙伴留言!!!