前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取

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

作者头像
用户1154259
发布2018-01-17 17:32:14
7500
发布2018-01-17 17:32:14
举报

从这篇开始学习Spring的JDBC,为了了解Spring对于JDBC的作用,先通过JDBC传统的流程,实现一个数据库的插入和读取。 从这篇你可以了解到:   1 传统的JDBC插入和读取的过程。   2 如何通过JDBC连接Mysql

  如何通过JDBC连接mysql

  首先看一下下面这张图:

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

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

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

  JDBC插入和读取过程

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

  1 加载驱动程序

代码语言:javascript
复制
Class.forName("com.mysql.jdbc.Driver");

  2 创建连接

代码语言:javascript
复制
Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);

  3 创建执行计划

代码语言:javascript
复制
PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("select * from persons");

  4 执行查询获取结果

代码语言:javascript
复制
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println("id : " + rs.getString(1) + " name : "+ rs.getString(2) + " age : " + rs.getInt(3));
            }

  5 关闭查询结果

代码语言:javascript
复制
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

  6 关闭执行计划

代码语言:javascript
复制
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

  7 关闭连接

代码语言:javascript
复制
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

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

  首先是接口部分:

代码语言:javascript
复制
package com.spring.chap5.dao;

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

  然后是实现部分

代码语言:javascript
复制
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的模板,就派上用场了。

  测试类如下:

代码语言:javascript
复制
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语句:

代码语言:javascript
复制
/*
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);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-02-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •   如何通过JDBC连接mysql
  •   JDBC插入和读取过程
  •   按照上面的几个步骤,来看一下实现的代码:
  •   另外还需要一个很重要的部分,就是sql语句:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档