从这篇开始学习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() + " name : "+ rs.getString() + " age : " + rs.getInt());
}

  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(, id);
pstmt.setString(, name);
pstmt.setInt(, 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() + " name : "+ rs.getString() + " age : " + rs.getInt());
}
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("", "xingoo1", );
oldjdbc.insertPerson("", "xingoo2", );
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 ('','xingoo1',20),('','xingoo2',20);

【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取的更多相关文章

  1. 【Spring实战】—— 16 基于JDBC持久化的事务管理

    前面讲解了基于JDBC驱动的Spring的持久化管理,本篇开始则着重介绍下与事务相关的操作. 通过本文你可以了解到: 1 Spring 事务管理的机制 2 基于JDBC持久化的事务管理 Spring的 ...

  2. Spring实战6:利用Spring和JDBC访问数据库

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

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

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

  4. 【Spring实战】—— 15 Spring JDBC模板使用

    前一篇通过对传统的JDBC的使用操作,可以体会到使用的繁琐与复杂,套句话说,是用了20%作了真正的工作,80%作了重复的工作. 那么通过本篇,可以了解如下的内容: 1 如何配置数据源 2 如何在spr ...

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

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

  6. (一)《Spring实战》——Spring核心

    <Spring实战>(第4版) 第一章:Spring之旅 1. 简化Java开发 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程: ...

  7. Spring实战第一章学习笔记

    Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...

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

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

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

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

随机推荐

  1. Win10如何新建用户怎么添加新账户

    https://jingyan.baidu.com/article/25648fc162d5899190fd0069.html 很多朋友都是安装完Windows10系统后,直接使用超级管理员账号登录系 ...

  2. 在Eclipse中调试web项目

    由于现在的公司用的是Eclipse开发web项目而且不安装MyEclipse插件,没有myclipse插件就不能在Eclipse中配置web服务器,所以也就不好对web项目进行调试.下面的方法就可以让 ...

  3. 前后端分离和restful开发规范

    一.web开发的两种模式 1.前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高. 这种应用模式比 ...

  4. python 函数基础知识整理

    一.函数的定义: 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":". def 是固定的,不能变,必须是连续的def三个字母,不能分开... 空格 为了将 ...

  5. Python入门笔记——(2)列表和元组

    一.序列 python包含6种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.序列中每个元素被分配一个序号即索引,第一个索引为0,第二个为1,以此类推.也可以 ...

  6. 使用electron构建跨平台Node.js桌面应用经验分享

    by zhangxinxu from http://www.zhangxinxu.com/wordpress/?p=6154 本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处,摘要引流则随 ...

  7. golang中的文件操作

    一.文件的基本介绍 文件是数据源(保存数据的地方)的一种,比如经常使用的word文档,txt文件,excel文件都是文件.文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音等等. ...

  8. GreenPlum 大数据平台--并行备份(四)

    01,并行备份(gp_dump) 1) GP同时备份Master和所有活动的Segment实例 2) 备份消耗的时间与系统中实例的数量没有关系 3) 在Master主机上备份所有DDL文件和GP相关的 ...

  9. 段错误:使用opencv打开视频流

    段错误:使用opencv打开视频流时报这个错误 1 使用命令dmesg 发现是libavutil.so模块发生了错误. 如果是java端报错,可能如下: libavutil.so  ... av_di ...

  10. API-Framework 前后端分离