Spring JDBC 相关知识

一、数据访问

  • 数据库访问,JDBC
  • 事务管理
  • ORM整合
1.DAO
  • Data Access Object ,即数据访问相关接口
2. ORM
  • Object Relation Mapping,即对象关系映射

二、为什么使用Spring JDBC

1、以往的情况下,如使用原始的JDBC访问数据库,一般都要经过以下几个步骤
  1. 装载驱动
  2. 建立数据库连接
  3. 执行SQL语句
  4. 处理执行结果
  5. 清理环境

但是一般来说,我们需要关心的内容只有

  1. 连接参数
  2. 执行SQL语句
  3. 处理执行结果

其他的次要内容,我们并不是很需要关心,而Spring JDBC 就是为了减少这部分的工作量而产生的,简而言之,Spring JDBC 可以帮我们解决了一些我们不是很关心的内容,我们只需要关心我们的业务代码实现就好了。

三、Spring JDBC 的 DataSource 相关知识

一般来说,DataSource的建立一般包含以下几个内容:

  • 驱动名称
  • 连接地址
  • 用户名
  • 密码

而DataSource一般对于程序而言,只有一个方法是其存在的目的,那就是 getConnection ,即获取数据库连接。

DataSource

三、JdbcTemplate

  • 封装了很多内容,如获取连接,执行SQL,异常处理,关闭连接等。
  • 具体内容可以查看官方文档介绍。

四、一个例子

Tips. 以下内容的参考均可查看官方文档查找
  • Spring官方文档
  • JdbcTemplate 类API官方文档
1. 创建一个maven项目
2. 修改 pom.xml

    4.0.0
    cn.lazyfennec
    HelloSpringJDBC
    0.0.1-SNAPSHOT
    
        
            org.springframework
            spring-context
            5.3.18
        
        
            org.springframework
            spring-jdbc
            5.3.18
        
        
        
            mysql
            mysql-connector-java
            8.0.16
        
        
        
            org.apache.commons
            commons-dbcp2
            2.9.0
        
    

3. 创建数据库配置文件 db.properties (resources 目录下)
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/cloud_study?serverTimezone=GMT
jdbc.username=####(请替换成自己的账号)
jdbc.password=####(请替换成自己的密码)
4. 创建application-context.xml (resources 目录下)


    
        
    
    
    
    
        
        
        
        
    
    
    

5. 创建JdbcTemplateDao.java
package cn.lazyfennec;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class JdbcTemplateDao {
    
    private JdbcTemplate jdbcTemplate;
    
    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }
    
    public void createTable() {
        jdbcTemplate.execute(
                "create table jdbc_tmp_user (id integer, first_name varchar(64), last_name varchar(64))"
        );
    }
}
6. 创建程序执行类HelloSpringJDBC.java,然后执行文件
package cn.lazyfennec;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloSpringJDBC {
    public static void main(String[] args) {
        
        ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");

        JdbcTemplateDao dao = context.getBean("jdbcTemplateDao", JdbcTemplateDao.class);
        dao.createTable();

        ((ConfigurableApplicationContext) context).close();
    }
}
7. 查看数据库可以看到已经创建成功了表 jdbc_tmp_user
mysql> show tables;
+-----------------------+
| Tables_in_cloud_study |
+-----------------------+
| course                |
| jdbc_tmp_user         |   // 这个是新创建的表
| teacher               |
| user                  |
| usercourse            |
+-----------------------+

五、额外知识

在使用JdbcTemplate的时候可以使用 " ? "占位,具体一个例子如下:

  this.jdbcTemplate.update("insert into user values (1, ?, ?)", "Lei", 'Li');

六、NamedParameterJdbcTemplate

  • 点击查看官方API文档
NamedParameterJdbcTemplate

七、SqlParameterSource

  • 点击查看官方API文档
SqlParameterSource

八、异常处理

对于触发的异常,Spring JDBC 会抛出DataAccessException 异常,其下又有很多具体的异常继承了DataAccessException,程序可以借助不同的异常类型判断具体触发该异常的问题是什么。

  • [点击查看官方API文档] (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/dao/class-use/DataAccessException.html)
DataAccessException

你可能感兴趣的:(Spring JDBC 相关知识)