Spring JDBC技术

1、什么是Spring JDBC

因为JDBC的操作过程比较烦索,并且操作步骤大多相对固定,所以很多框架都对其进行了封装与优化。其中著名的Spring框架也对JDBC做了简单封装。

Spring框架提供了一个JdbcTemplate类简化JDBC的开发,它的特点是:简单、方便,这个技术俗称Spring JDBC技术。

Spring JDBC理解为Spring框架对持久层JDBC操作进行了封装与优化,化繁琐为简单实用,即解决持久层的技术问题。

2、Spring JDBC的作用

Spring JDBC技术中最为核心的类是JdbcTemplate类。

JdbcTemplate类负责数据库资源管理和错误处理,大大简化了开发人员对数据库的操作,使得开发人员可以从繁琐的数据库操作中解脱出来,从而将更多精力投入到编写业务逻辑当中。

3、使用Spring JDBC

Spring JDBC常用API:

org.springframework.jdbc.core.JdbcTemplate类:

方法作用说明

public JdbcTemplate(DataSource dataSource)创建JdbcTemplate对象需要依赖连接池

JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());

public int update(String sql, Object... args) throws DataAccessException执行非查询操作如果是增删改操作,返回值表示本次操作影响表中多少条记录,如果是创建,修改,删除操作,返回0

int count = jdbcTemplate.update(sql, params);

public <T> List<T> query(String sql,                          RowMapper<T> rowMapper,Object... args) throws DataAccessException将查询结果封装为JavaBean对象,以List<JavaBean>形式返回RowMapper是一个接口,一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装 ,原理是根据表中字段名和JavaBean中属性名一一对应关系进行封装的。

List<Emp> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class), params);

public <T> T queryForObject(String sql,                             Class<T> requiredType,                             Object... args)throws DataAccessException将查询结果封装为对象一般用于聚合函数的查询

long count = jdbcTemplate.queryForObject(sql, long.class, params);

需求:

将user表中id=1的密码修改为333333


结果:

修改前修改后




步骤:

01导入jar包和配置文件

Spring JDBC的jar包:

 commons-logging-1.2.jar

spring-beans-5.0.0.RELEASE.jar

spring-core-5.0.0.RELEASE.jar

spring-jdbc-5.0.0.RELEASE.jar

spring-tx-5.0.0.RELEASE.jar

Mysql数据库的jar包:

 mysql-connector-java-5.1.38-bin.jar

Druid连接池的jar包和配置文件:

 druid-1.0.9.jar

 src/druid.properties

02导入DruidUtil工具类

03创建JdbcTemplate对象,依赖于连接池

04创建sql语句,如果有值,可以用占位符?号替代

05如果sql语句中有占位符?号,必须用一维Object[]为每个占位符?号依次赋值

06执行sql语句,并接收结果

07处理结果


代码:

package com.it.jdbctemplate;


import com.util.JdbcUtil;

import org.springframework.jdbc.core.JdbcTemplate;


public class JdbcTemplateDemo01 {

    public static void main(String[] args) {

        //01导入jar包和配置文件

        //02导入DruidUtil工具类

        //03创建JdbcTemplate对象,依赖于连接池

        JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());

        //04创建sql语句,如果有值,可以用占位符?号替代

        String sql = "UPDATE USER SET PASSWORD=? WHERE id=?";

        //05如果sql语句中有占位符?号,必须用一维Object[]为每个占位符?号依次赋值

        Object[] params = {"333333",1};

        //06执行sql语句,并接收结果

        int count = jdbcTemplate.update(sql, params);

        //07处理结果

        if (count > 0) {

System.out.println("操作成功");

        } else {

System.out.println("操作失败");

        }

    }

}


源码如下:

1 @NonNull可以标注在方法、字段、参数之上,表示对应的值不可以为空

2 @Nullable注解可以标注在方法、字段、参数之上,表示对应的值可以为空


4、JdbcTemplate类方法总结


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容