从这篇开始学习Spring的JDBC,为了了解Spring对于JDBC的作用,先通过JDBC传统的流程,实现一个数据库的插入和读取。

  从这篇你可以了解到:

  1 传统的JDBC插入和读取的过程。

  2 如何通过JDBC连接Mysql

  如何通过JDBC连接mysql

  首先看一下下面这张图:

  应用程序需要通过mysql的驱动程序,才能与数据连接。

  驱动程序下载地址:mysql-connector-java-5.1.13-bin.jar

  在设计程序的时候,应该采用接口编程的方式,这样能够减小数据操作与应用业务逻辑代码之间的耦合。

  JDBC插入和读取过程

  使用传统的JDBC需要经过如下的几个步骤:

  1 加载驱动程序

Class.forName("com.mysql.jdbc.Driver");

  2 创建连接

Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);

  3 创建执行计划

PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("select * from persons");

  4 执行查询获取结果

            ResultSet rs = pstmt.executeQuery();while (rs.next()) {System.out.println("id : " + rs.getString(1) + " name : "+ rs.getString(2) + " age : " + rs.getInt(3));}

  5 关闭查询结果

            if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}

  6 关闭执行计划

            if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}

  7 关闭连接

            if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}

  按照上面的几个步骤,来看一下实现的代码:

  首先是接口部分:

package com.spring.chap5.dao;public interface OldJdbc {/*** 插入数据*/public void insertPerson(String id,String name,int age);/*** 查询所有结果*/public void findAllPerson();
}

  然后是实现部分

package com.spring.chap5.dao;import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;public class OldJdbcImpl implements OldJdbc{String driver = "com.mysql.jdbc.Driver";String userName = "root";String passwrod = "123qwe";String url = "jdbc:mysql://localhost:3306/test";public void insertPerson(String id,String name,int age) {try {Class.forName(driver);Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("insert into persons (id,name,age) values (?,?,?)");pstmt.setString(1, id);pstmt.setString(2, name);pstmt.setInt(3, age);pstmt.executeUpdate();if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}} catch (Exception e) {e.printStackTrace();}}public void findAllPerson() {try {Class.forName(driver);Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("select * from persons");ResultSet rs = pstmt.executeQuery();while (rs.next()) {System.out.println("id : " + rs.getString(1) + " name : "+ rs.getString(2) + " age : " + rs.getInt(3));}if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}} catch (Exception e) {e.printStackTrace();}}
}

  可以看到,光是两个简单的插入和查询,就有如此多的代码,而且大部分都是相同的过程。因此spring的模板,就派上用场了。

  测试类如下:

public class test {public static void main(String[] args) {OldJdbc oldjdbc = new OldJdbcImpl();oldjdbc.insertPerson("001", "xingoo1", 20);oldjdbc.insertPerson("002", "xingoo2", 20);oldjdbc.findAllPerson();}
}

  另外还需要一个很重要的部分,就是sql语句:

/*
SQLyog v4.05
Host - 4.1.11-nt : Database - test
*********************************************************************
Server version : 4.1.11-nt
*/create database if not exists `test`;USE `test`;/*Table structure for table `test`.`persons` */drop table if exists `test`.`persons`;CREATE TABLE `persons` (`id` varchar(20) NOT NULL default '',`name` varchar(20) default NULL,`age` int(10) default NULL,PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;/*Data for the table `test`.`persons` */insert into `test`.`persons` values ('001','xingoo1',20),('002','xingoo2',20);

本文转自博客园xingoo的博客,原文链接:【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取,如需转载请自行联系原博主。

【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取相关推荐

  1. Spring实战6-利用Spring和JDBC访问数据库

    主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRep ...

  2. SpringBoot实战(四)之使用JDBC和Spring访问数据库

    这里演示的是h2databse示例,所以简单的介绍普及下h2database相关知识 H2数据库是一个开源的关系型数据库. H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提 ...

  3. Spring实战(第3版)

    <Spring实战(第3版) > 基本信息 原书名:Spring in Actiong(third edition) 作者: (美)Craig Walls 译者: 耿渊 张卫滨 出版社:人 ...

  4. 《spring实战第四版》的读书笔记

    <spring实战第四版>的读书笔记 1 概述 <Spring实战第四版>描述了Spring4架构的设计,看完了以后,最大感觉是Spring的IOC与aop理念实在是太强大了, ...

  5. Spring实战-雇员薪资管理系统

    Spring实战-雇员薪资管理系统 基本概述 这里使用的是Spring2.5+Hibernate3.3+Struts1.3(SSH)框架,进行整合开发,通过该案例可以了解使用SHH框架进行开发的基本操 ...

  6. 【转】Nutz | Nutz项目整合Spring实战

    http://blog.csdn.net/evan_leung/article/details/54767143 Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入spri ...

  7. (转)Nutz | Nutz项目整合Spring实战

    http://blog.csdn.net/evan_leung/article/details/54767143 Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入spri ...

  8. Spring实战——无需一行xml配置实现自动化注入

    已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看.显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓点水,浮光掠影. 就像有位同事说的一样,有些 ...

  9. Spring实战笔记——(1)Spring之旅(上)

    Spring实战笔记--(1)Spring之旅 文章目录 Spring实战笔记--(1)Spring之旅 1.1简化Java开发 1.1.1 激发POJO的潜能 1.1.2依赖注入 依赖注入的实现 构 ...

最新文章

  1. 缓存成神路:Redis读写分离难以理解?一文解析Redis读写分离技术
  2. global cache cr request
  3. JVM内存模型及垃圾收集策略解析(一)
  4. 微服务架构中的key-value pair数据结构
  5. WTMPlus 低代码平台来了
  6. Android AudioTrack/AudioRecord -wav文件读取3
  7. mysql 数据库设计规范_MYSQL数据库设计规范与原则
  8. python解析二维码_Python二维码生成识别实例详解
  9. 鸿蒙-HI3516-Docker环境搭建编译烧录
  10. 快狗打车通过港交所上市聆讯
  11. xutils使用流程
  12. windows 不能确定用户和计算机名称
  13. es 链接mysql,用python简单实现mysql数据同步到ElasticSearch的教程
  14. 文后参考文献著录规则 自动生成器 HTML
  15. 直接将ADB授权写入到手机的方法(手机需要有root权限)
  16. ScriptX,smsx打印控件安装的终极解决办法
  17. Java(回文数--一种比较简单的写法)
  18. 今天是世界读书日,包邮赠送几本技术书 !
  19. Codeforces1603 B. Moderate Modular Mode(数学)
  20. docker基础——Docker是什么

热门文章

  1. 企业Shell实战-MySQL分库分表备份脚本
  2. GdiPlus[12]: IGPLinearGradientBrush 的其他构建方式
  3. Android中蓝牙的基本使用
  4. FreeBSD从零开始---Web服务器搭建(一)
  5. Microsoft System Center 2012:将系统管理带入云中
  6. 让linux启动更快的方法
  7. [洛谷P5147]随机数生成器
  8. 玩转Nodejs的集群
  9. 勒索病毒爆发 中国多家校园网发紧急通知提醒防范
  10. linux两个文件修改主机名