转载

Spring Data JDBC与JDBC的区别

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

正文到此结束
本文目录