版本:idea2020.1.1    jdk1.8   maven3.6.3

注:本文章摘自Java EE企业级应用开发教程,黑马程序员/编著,仅用于记录学习笔记,分享学习经历。

一、Spring JDBC

1、Spring JdbcTemplate:继承了抽象类JdbcAccessor,实现了JdbcOperations接口;JdbcAccessor为其提供了访问数据库时使用的一些公共属性,如下。

DataSource:获取数据库链接,具体实现时可以引入对数据库链接的缓冲池和分布事务的支持,可以作为访问数据库资源的标准接口。

SQLExceptionTranslator:负责对SQLException进行转译工作,通过必要的设置或者获取SQLExceptionTranslator中的方法,可以使JdbcTemplate在需要处理SQKException时,委托SQLExceptionTranslator的实现类来完成相关的转译工作。

2、Spring JDBC的配置

Spring JDBC中的主要包
包名 说明
core 包含了JDBC的核心功能,包括JdbcTemplate类、SimpleJdbcInsert类、SimpleJdbcCall类以及NamedParameterJdbcTemplate类。
dataSource 访问数据源的实用工具类,它有多重数据源的实现,可以再JavaEE容器外部测试JDBC代码。
objcet 以面向对象的方式访问数据库,它允许执行查询并将返回结果作为业务对象,可以在数据表的列和业务对象的属性之间映射查询结果。
support 包含了core和object包的支持类,例如,提供异常转换功能的SQLException类。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!-- 1.配置数据源 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- 链接数据库的url --><property name="url" value="jdbc:mysql://localhost:3306/spring"/><!-- 链接数据库的用户名 --><property name="username" value="root"/><!-- 链接数据库的密码 --><property name="password" value="x5"/></bean><!-- 2.配置JDBC模板 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!-- 默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean><!-- 3.配置注入类 --><bean id="xxx" class="Xxx"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean>
</beans>
datSource属性
属性名 含义
driverClassName 所使用的驱动名称,对应驱动JAR包中的Driver类
url 数据源所在地址
username 访问数据库的用户名
password 访问数据库的密码

二、Spring JdbcTemplate

1、execute(String sql):

导入maven依赖  ——>  编辑配置文件jdbc1.xml  ——> 编写测试类JdbcTemplateTest1 ——>打开数据库查看测试结果

    <!-- Spring核心依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.7.RELEASE</version></dependency><!-- Spring dao依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.3.7.RELEASE</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!-- 1.配置数据源 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- 链接数据库的url --><property name="url" value="jdbc:mysql://localhost:3306/test"/><!-- 链接数据库的用户名 --><property name="username" value="root"/><!-- 链接数据库的密码 --><property name="password" value="x5"/></bean><!-- 2.配置JDBC模板 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!-- 默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean>
</beans>
public class JdbcTemplateTest1 {/*** 使用execute()方法建表*/public static void main(String[] args) {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc1.xml");//获取JdbcTemplate实例JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");//建表String sql = "create table jdbc1(id int primary key auto_increment, username varchar(50), password varchar(50))";jdbcTemplate.execute(sql);System.out.println("jdbc1创建成功");}
}

2、update():可以完成插入、更新和删除数据的操作。在JdbcTemplate类中,提供了一系列update()方法,如下表。

update()方法
方法 说明
int update(String sql) 执行传入的sql语句,并返回影响行数。
int update(PreparedStatementCreator psc) 执行从PreparedStatementCreator返回的语句,返回影响行数。
int update(String sql, PreparedStatementSetter pss) 通过PreparedStatementSetter设置SQL语句中的参数,返回影响行数。
int update(String sql, Object ... args) 使用Objcet..设置SQL语句中的参数,参数不为NULL,返回影响行数。

创建pojo类Jdbc2 ——>  Jdbc2Dao  ——>  Jdbc2DaoImpl  ——>  jdbc2.xml  ——>  JdbcTemplateTest2(添加修改删除三种方法)

public class Jdbc2 {private Integer id;private String username;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
public interface Jdbc2Dao {//添加public int add(Jdbc2 jdbc2);//更新public int update(Jdbc2 jdbc2);//删除public int del(int id);
}
public class Jdbc2DaoImpl implements Jdbc2Dao {//声明JdbcTemplate属性及其setter方法private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Overridepublic int add(Jdbc2 jdbc2) {String sql = "insert into jdbc1(username,password) value(?,?)";Object[] objects = new Object[] {jdbc2.getUsername(),jdbc2.getPassword()};//执行添加操作int num = this.jdbcTemplate.update(sql, objects);return num;}@Overridepublic int update(Jdbc2 jdbc2) {String sql = "update jdbc1 set username=?,password=? where id=?";Object[] objects = new Object[] {jdbc2.getUsername(),jdbc2.getPassword(),jdbc2.getId()};int num = this.jdbcTemplate.update(sql,objects);return num;}@Overridepublic int del(int id) {String sql = "delete from jdbc1 where id=?";int num = this.jdbcTemplate.update(sql,id);return num;}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!-- 1.配置数据源 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- 链接数据库的url --><property name="url" value="jdbc:mysql://localhost:3306/test"/><!-- 链接数据库的用户名 --><property name="username" value="root"/><!-- 链接数据库的密码 --><property name="password" value="x5"/></bean><!-- 2.配置JDBC模板 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!-- 默认必须使用数据源 --><property name="dataSource" ref="dataSource"/></bean><bean id="jdbc2Dao" class="com.jc.dao.impl.Jdbc2DaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean>
</beans>
public class JdbcTemplateTest2 {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc2.xml");Jdbc2Dao jdbc2Dao = (Jdbc2Dao) applicationContext.getBean("jdbc2Dao");Jdbc2 jdbc2 = new Jdbc2();@Testpublic void add() {jdbc2.setUsername("tom");jdbc2.setPassword("123");int num = jdbc2Dao.add(jdbc2);if (num>0) {System.out.println("插入"+num+"数据");}else{System.out.println("插入失败");}}@Testpublic void update() {jdbc2.setId(1);jdbc2.setUsername("tom");jdbc2.setPassword("qpqp");int num = jdbc2Dao.update(jdbc2);if (num>0) {System.out.println("修改"+num+"数据");}else{System.out.println("修改失败");}}@Testpublic void del() {int num = jdbc2Dao.del(1);if (num>0) {System.out.println("删除"+num+"数据");}else{System.out.println("删除失败");}}
}

3、query()

常用query()方法
方法 说明
List query(String sql, RowMapper rm) 执行String类型参数提供的SQL语句,并通过RowMapper返回一个List类型的结果
List query(String sql, PreparedStatementSetter pss, RowMapper rm) 根据String类型参数提供的SQL语句创建PreparedStatement对象,通过RowMapper将结果返回到LIst中
List query(String sql, Object[] objs, RowMapper rm) 使用Objcet[]的值来设置SQL语句中的参数,采用RowMapper毁掉方法可以直接返回List类型数据
queryForObject(String sql, RowMapper rm, Object,,, args) 将args参数绑定到SQL语句中,并通过RowMapper返回一个OBject类型的单行记录
queryForList(Strng sql, Object[] args, class<T> elementType) 该方法可以返回多行数据的结果,但必须是返回列表,elementType参数返回的是List元素类型。

修改Jdbc2Dao  ——>  修改Jdbc2DaoImpl    ——>  修改JdbcTemplateTest2

public interface Jdbc2Dao {//通过id查询public Jdbc2 findId(int id);//查询全部public List<Jdbc2> findAll();
}
public class Jdbc2DaoImpl implements Jdbc2Dao {//声明JdbcTemplate属性及其setter方法private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Overridepublic Jdbc2 findId(int id) {String sql = "select * from jdbc1 where id=?";//创建一个新的BeanPropertyRowMapper对象RowMapper<Jdbc2> rowMapper = new BeanPropertyRowMapper<Jdbc2>(Jdbc2.class);return this.jdbcTemplate.queryForObject(sql, rowMapper, id);}@Overridepublic List<Jdbc2> findAll() {String sql = "select * from jdbc1";RowMapper<Jdbc2> rowMapper = new BeanPropertyRowMapper<Jdbc2>(Jdbc2.class);return this.jdbcTemplate.query(sql, rowMapper);}
}
public class JdbcTemplateTest2 {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc2.xml");Jdbc2Dao jdbc2Dao = (Jdbc2Dao) applicationContext.getBean("jdbc2Dao");Jdbc2 jdbc2 = new Jdbc2();@Testpublic void findId(){jdbc2 = jdbc2Dao.findId(2);System.out.println(jdbc2);}@Testpublic void findAll() {List<Jdbc2> jdbc2List = jdbc2Dao.findAll();for (Jdbc2 j : jdbc2List) {System.out.println(j);}}
}

Spring(4)(JDBC)相关推荐

  1. java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  2. Spring 的持久化实例(JDBC, JdbcTemplate、HibernateDaoSupport、JdbcDaoSupport、SqlSessionDaoSupport等)...

    2019独角兽企业重金招聘Python工程师标准>>> 一.表(这里用mysql,数据库名为yiibai) CREATE TABLE `customer` (`CUST_ID` in ...

  3. 基于Java( Spring+SpringMVC+JDBC)+MySQL实现(Web)家电售后服务系统【100010064】

    一.家电售后服务系统 1.1 背景 随着生活质量的提高,现在各家各户都在使用家电,但是在家电被购买之后,免不了会出现一些问题,需要厂家提供一些技术支持等,家电售后服务就成了厂家和用户之间一个重要的交流 ...

  4. 实战讲解Spring Oauth2.0密码模式和授权码模式(内存inMemory+持久化jdbc配置)

    1 缘起 先吐槽, 在搜索关于Oauth2.0授权码方式认证时, 遇到的问题比较多,一句话,按照其分享的步骤一步一步来,最终,无法成功, 本想,抄近路,看一些前人分享的应用案例,直接使用, 近路不通, ...

  5. Java回顾(十二) File类、Druid连接池、JDBCTemplate(Spring JDBC)、HTML和CSS

    1.File类 1.1.File类概述和构造方法 File:是文件和目录路径名的抽象表示 文件和路径是可以通过File封装为对象的 以下是三种实现的方法,一般来说,用第一种就可以 public cla ...

  6. Spring Boot-使用JDBC连接并检索数据库(Mysql在Docker中)

    目录 基本概念 演示及代码 如果有乱码 基本概念 在Spring Boot调用JDBC时默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源:数据源的相关配置 ...

  7. Spring基础面试题(一)

    Spring是什么? Spring是一个轻量级的IoC和AOP容器框架.是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求.常见的配置方式有 ...

  8. Spring+SpringMVC+shiro+mysql(一)

    Spring+SpringMVC+shiro+mysql(一) 最近要做个后台管理系统,就会设计到权限的管理控制,于是就想到 shiro ,下面是自己对Spring+shiro的一点点理解,记录下来, ...

  9. 最棒 Spring Boot 干货总结(超详细,建议收藏)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:CHEN川 链接:http://www.jianshu.co ...

  10. Spring基础专题——第九章(基础注解编程——上)

    目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从一个互联网职场小白到一个沪漂湿人,一路让我知道分享是一件多么重要的事情 ...

最新文章

  1. HDU5178 pairs【二分法】【尺取法】
  2. CNN中各种各样的卷积
  3. 上传图片文件(支持远程存储)
  4. Flex 流式布局 之 滚动条篇
  5. 【Flink】报错Could not forward element to next operator Buffer pool is destroyed
  6. Spring IOC 概述
  7. 网站服务器建立数据库连接时出错,修复Wordpress博客网站“建立数据库连接时出错”错误记录 | 科技爱好者博客 -专注于树莓派(Raspberry Pi)...
  8. Kepware OPC与服务器通讯
  9. Web服务器过载的情况
  10. 利用织梦高级搜索功能 , 来定制身份证驾驶证信息查询系统
  11. 海量数据荣获华为“中国政企数据存储优秀合作伙伴”金奖
  12. 【上海市】青年大学习自动提醒 代码脚本
  13. 设置TextView滚动
  14. Linux 高并发服务器开发
  15. [LeetCode]题解(python):155-Min Stack
  16. 编译原理 —— 逆波兰式
  17. 未来教育计算机二级收藏的题在哪看,2016年计算机二级office高级应用章节练习题(1)...
  18. 全微分 与 方向导数
  19. ckeditor KindEditor eWebEditor WQeditor FreeTextbox Tinymce 几款在线编辑器的比较(附各版本demo下载地址)
  20. 最全openstack部署教程

热门文章

  1. 开发笔记--Vue中不同组件的传值的几种方法
  2. 复习总结:数据挖掘(挖掘)
  3. Python数据挖掘——概要
  4. 勇敢的女人,永远比懦弱的女人美丽
  5. Linux下解压安装redis
  6. 企业微信开发:使用 JS-SDK 实现图像接口功能(六)
  7. WPF中枚举值的应用
  8. 破解Navicat Premium15时出现的问题
  9. 受尽苦难而不厌,此乃修罗之道
  10. SpringBoot具有不受支持的返回值类型