• 手写JDBC


    1. 将数据库、驱动信息存储在配置文件

    configure.properties

    1 url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT&useSSL=false
    2 user=用户名,一般是root
    3 password=数据库密码
    4 driver=com.mysql.cj.jdbc.Driver

    2. JDBC工具类

    MyDBUtil.java

     1 import java.io.InputStream;
     2 import java.sql.*;
     3 import java.util.Properties;
     4 
     5 /**
     6  * 手写实现JDBC工具类
     7  * @author Nemo
     8  * @version 1.0
     9  * @date 2019/4/10
    10  */
    11 public class MyDBUtil {
    12     private static String url;
    13     private static Properties proterties;
    14     
    15     // 注册驱动
    16     static {
    17         proterties = new Properties;
    18         
    19         InputStream configureStream = MyDBUtil.class.getClassLoader.getResourceAsStream("configure.proterties");
    20         try {
    21             properties.load(configureStream);
    22             String driver = properties.getProperty("driver");
    23             class.forName(driver);
    24             
    25             url = properties.getProperty("url");
    26         } catch (Exception e) {
    27             e.printStackTrace();
    28         }
    29     }
    30     
    31     // 获取连接
    32     public static Connection getConnection() throw SQLException{
    33         return DriverManager.getConnection(url, properties);
    34     }
    35     
    36     // 释放资源
    37     public static void release(Statement statement, Connection connection, ResultSet resultSet) {
    38         closeQuietly(statement);
    39         closeQuietly(connection);
    40         closeQuietly(resultSet);
    41     }
    42     // 重载释放资源
    43     public static void release(Statement statement, Connection connection) {
    44         closeQuietly(statement);
    45         closeQuietly(connection);
    46     }
    47     
    48     private static void closeQuietly(AutoCloseable closeable) {
    49         if (closeable != null) {
    50             try {
    51                 closeable.close();
    52             } catch (Exception e) {
    53                 e.printStackTrace();
    54             }
    55         }
    56     }
    57 }

    3. 以实现数据库事务为例,演示工具类的使用

    TranctionTest.java

     1 import org.junit.Test;
     2 
     3 import java.sql.Connection;
     4 import java.sql.SQLException;
     5 import java.sql.Savepoint;
     6 import java.sql.Statement;
     7 
     8 /**
     9  * 以数据库事务为例进行演示
    10  * @author Nemo
    11  * @version 1.0
    12  * @date 2019/4/13
    13  */
    14 public class TranctionTest {
    15     @Test
    16     public void traction() throws SQLException {
    17         Connection conn = null;
    18         Statement stm = null;
    19         Savepoint savepoint = null;
    20         try {
    21             // 获取数据库连接
    22             conn = MyDBUtil.getConnection();
    23             
    24             // 关闭数据库自动commit功能
    25             conn.setAutoCommit(false);
    26             
    27             // 建立sql语句
    28             stm = conn.cteateStatement();
    29             
    30             // zs给lisi转账100
    31             String sql1 = "update user set money=money-100 where name='zs';";
    32             String sql2 = "update user set money=money+100 where name='lisi';";
    33             
    34             // wangwu给lisi转账100
    35             String sql3 = "update user set money=money-100 where name='wangwu';";
    36             String sql4 = "update user set money=money+100 where name='lisi';";
    37             
    38             // 提交sql语句
    39             stm.executeUpdate(sql1);
    40             stm.executeUpdate(sql2);
    41             
    42             // 设置savepoint
    43             savepoint = conn.setSavepoint();
    44             
    45             int i = 1/0;
    46             
    47             stm.executeUpdate(sql3);
    48             stm.executeUpdate(sql4);
    49             
    50             conn.commit();
    51         } catch (Exception e) {
    52             conn.rollback(savepoint);
    53             conn.commit();
    54         } finally {
    55             MyDBUtil.release(statement, connection);
    56         }
    57     }
    58 }
  • 相关阅读:
    Rigidbody和Collider
    Unity官方实例教程 Roll-a-Ball
    unity还原three之旋转
    unity还原three——顶点,三角面,uv
    unity还原three导出的json——基本模型,位移,旋转,缩放
    【struts2基础】配置详解
    【深入Struts2】获取ServletAPI的三种方式
    JDBC事务与事务隔离级别详解
    【GOF23设计模式】--工厂模式
    【GOF23设计模式】--单例模式
  • 原文地址:https://www.cnblogs.com/nemowang1996/p/10701857.html
Copyright © 2020-2023  润新知