MyBatis学习(一)————纯jdbc编程

  • 什么是JDBC  

  JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。   

  • JDBC的主要功能 

   1)建立与数据库或其他数据源的连接

    2)向数据库发送sql命令

    3)处理数据库得返回结果

  • JDBC的常用类和接口

  连接到数据库(Connection)、建立操作指令(Statement)、执行查询指令(executeQuery)、获得查询结果(ResultSet)等。

    1)DriverManager

  DriverManager类是JDBC的管理类,作用于用户和驱动程序之间。它跟踪在可用的驱动程序,并在数据库和相应驱动程序之间建立连接。

  另外,DriverManager类也处理诸如驱动程序登陆时间限制及登录和跟踪消息的显示事务。

  对于简单的应用程序,一般程序员需要在此类中直接使用唯一的方法时DriverManager.getConnection()。该方法将建立与数据库的链接。

  JDBC允许用户调用DriverManager的方法getDriver()、getDrivers()和registerDriver()及Driver的方法connect().

     2)Connection

        Connection对象代表与数据库的链接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与很多数据库有连接。打开连接与数据库建立连接的标准方法是调用DriverManager.getConnection()方法。

//URL为数据库连接地址,USER和UPSS为数据库连接的用户名和密码  

Connection conn = DriverManager.getConnection(URl,USER,UPASS)  

3)Statement  

       Statement对象用于将SQL语句发送到数据库中。

  Statement对象,它们都作为在给定链接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。它们都专用于发送特定类型的SQL语句:

(1)Statement对象用于执行不带参数的简单的SQL语句;Statement接口提供了执行语句和获取结果的基本方法。

(2)PerparedStatement对象用于执行带或不带IN参数的预编译SQL语句;PeraredStatement接口添加处理IN参数的方法;

(3)CallableStatement对象用于执行对数据库已存储过程的调用;CallableStatement添加处理OUT参数的方法。

Statement提供了许多方法,最常用的方法如下:

(1)execute()方法:运行语句,返回是否有结果集。

(2)executeQuery()方法:运行查询语句,返回ReaultSet对象。

(3)executeUpdata()方法:运行更新操作,返回更新的行数。

(4)addBatch()方法:增加批处理语句。

(5)executeBatch()方法:执行批处理语句。

(6)clearBatch()方法:清除批处理语句

    4)ResultSet

  ResultSet包含符合SQL语句中条件的所有行记录,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next()方法用于移动到ResultSet中的下一行,使下一行成为当前行。

 

以下是一段简单的JDBC代码

package com.zk.practice;

/**
 * @Author: Joyun
 * @DATE: 2019/1/26 14:33
 */
public class User {

    private String uid;
    private String uname;
    private String upass;

    public User(String uid,String uname ,String upass){
        this.uid = uid;
        this.uname = uname;
        this.upass = upass;
    }

    public String getUid() {
        return uid;
    }

    public String getUname() {
        return uname;
    }

    public String getUpass() {
        return upass;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public void setUpass(String upass) {
        this.upass = upass;
    }
}
User类
package com.zk.practice;

import java.sql.*;

/**
 * @Author: Joyun
 * @DATE: 2019/1/26 14:16
 */
public class JdbcTest {

    //数据库连接变量
    private Connection conn = null;

    //数据库驱动、mysql服务器地址、用户名、用户密码
    private final String DRIVER = "com.mysql.cj.jdbc.Driver";
    private final String URl = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=GMT%2B8";
    private final String USER = "root";
    private final String UPASS = "#qwer1234#";


    public JdbcTest() {
        try {
            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URl, USER, UPASS);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据库驱动加载异常");
        }

    }

    public Connection getConn() {
        return this.conn;
    }

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

}
JDBCTest
package com.zk.practice;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @Author: Joyun
 * @DATE: 2019/1/26 15:23
 */
public class Test {

    private static JdbcTest jdbcTest = new JdbcTest();
    //数据库预编译变量
    private static PreparedStatement pstm = null;
    //结果集变量
    private static ResultSet rs = null;

    //数据库连接变量
    private static Connection conn = jdbcTest.getConn();


    public static void main(String[] args) {
        User user = new User("101", "101", "101");
        String sql = "select * from users where uid = ? and upass = ?";
        System.out.println(user.getUname()+sql);
        try {
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, user.getUid());
            pstm.setString(2, user.getUpass());
            rs = pstm.executeQuery();
            while(rs.next()) {
                user.setUname(rs.getString("uname"));
            }
            System.out.printf(user.getUname());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (pstm != null) {
            try {
                pstm.close();
                pstm = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        jdbcTest.close();
    }
}
Test

 

 

posted @ 2019-01-28 10:51  Joyunicorn  阅读(287)  评论(0编辑  收藏  举报