JAVA JDBC简单操作

一:以MySQL数据库讲解为主,Oracle数据库和Sqlervler(只在windows下能用),sqllite嵌入式数据库应用在移动端(手机)小型数据库。

二:数据库简介,安装Mysql数据库。我就不详细说啦!!!

:MySQL数据库主要内容

  1. 1:SQL语句的操作      (DDL(数据库或者数据表的增删改查),DML(数据表中的数据增删改),DCL(数据库权限的设置),DQL(数据库表中的数据查询,各种查询,一个字段数据的总合,平均值等等))
  2. 2:Mysql编码问题(了解)
  3. 3:MySQL备份与恢复
  4. 4:MySQL约束  主键,非空,唯一,概念,外键约束
  5. 5:多表查询

四:JDBC基础

JDBC提供连接所有数据库的接口。可以连接全世界所有数据库

代码的规范化,前提你要在Java项目中导入MySQL数据库连接驱动包。

JDBC主要对象介绍

         0:先加载驱动包

         1:DriverManager      Connection conn = DriverManager.getConnection(url, user, pwd);创建连接对象

         2:Connection        Statement stmt = conn.createStatement();   创建执行sql语句的statement对象

           Statement stmt = conn.createStatement(int,int);    其中的两个参数是用来确定创建的Statement能生成什么样的结果集

         3:Statement  

Statement最为重要的方法是:

int executeUpdate(String sql):可以执行DDL和DML语句,即可执行insert、update、delete语句和create table、alter table、drop table等语句,返回成功执行的记录数;

ResultSet executeQuery(String sql):执行DQL查询语句,执行查询操作会返回ResultSet结果集。

boolean execute():可以执行前两个方法能执行的SQL语句,该方法用来执行增、删、改、查所有的SQL语句,返回值为boolean类型,表示执行的SQL语句是否有结果。

如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数;

如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果。

          4:ResultSet之滚动结果集

ResultSet表示结果集,它是一个二维的表格。ResultSet内部维护一个行光标(游标),光标位置从1开始。Result提供了一系列的方法来移动游标:

          5:ResultSet之获取列数据

          6: PreparedStatement

PreparedStatement是Statement接口的子接口,

其特点是:

  • 防SQL攻击;
  • 提高代码的可读性、可维护性;
  • 提高效率;

用法:

  • 声明SQL模板;
  • 调用Connection的preparedStatement(String sql)方法;
  • 调用pstmt的setXXX()系列方法,为SQL模板中的“?”占位符赋值;
  • 调用pstmt的executeUpdate()或executeQuery()方法,这些方法都没有参数

         7:JDBCUtils工具类

连接数据库的四大参数是:驱动类、URL、用户名、密码,这些参数都是与特定数据库关联,如果将来想要更改数据库,那么就要去修改这四大参数,那么为了不去修改代码,我们需要写一个JDBCUtils类,让它从配置文件中读取配置参数,然后创建连接对象。(就是连接数据库需要的参数都由JDBCUtils)

         8:UserDao

DAO(Data Access Object)模型就是写一个类,把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。

  1. 实体域,即操作的对象,例如我们操作的表是user表,那么就需要先写一个User类;
  2. DAO模式需要先提供一个DAO接口;
  3. 然后再提供一个DAO接口的实现类;
  4. 再编写一个DAO工厂,Service通过工厂来获取DAO实现。

          9:时间类型

时间类型的转换

因为java.util.Date是java.sql.Date/Time/Timestamp的父类,所以我们可以使用以下方式完成转换:

  1. 从数据库取Date值是可以完成自动类型转换;
  2. 往数据库中存值时,先把java.util.Date转为毫秒数,通过java.sql.Date(long Date)的构造方法,传入一个时间戳的方式完成类型转换;

          10:Statement批处理,PreparedStatement批处理  

JDBC事务

     1、事务概述

     2、事务隔离级别(四大隔离级别)

六、数据连接池

用池来管理Connection,这样就可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。

     1:C3P0数据连接池

使用类实现,使用配置文件实现

     2、ThreadLocal(相当一个连接池)

ThreadLocal通常用在一个类的成员上,多个线程访问它时,每个线程都有自己的副本,互不干扰。在Spring中把Connection放到ThreadLocal中。

dbUtils工具

     1、优化Dao模型层------>数据更新    数据查询

     2、dbUtils工具    需要导入的jar包(对数据的增删改封装

1:dbUtils中对数据的动态操作使用的是QueryRunner对象

2、QueryRunner对象介绍

     3、ResultSetHandler接口(对数据的查询封装

BeanListHandle

MapHandler

MapListHandle

ScalarHandle

查询数据也就是用这四个类来回变化,已经给你封装好的工具,看手册会用就行啦!!!

Service层的事务处理

1、优化JDBCUtil工具类(把事务从DAO层转移到service层处理)

JDBCUtil称为了DAO和Service的中介。以前事务处理是在DAO层处理的,需要调用connection的方法处理,service层没有conncetion。因为事务处理是业务,所有应该放在service层处理。

在Service中现在就调用这三个方法来完成事务的处理:

public class DemoService {

private DemoDao demoDao = new DemoDao();

public void method(){

try {

//开启事务

JDBCUtil.beginTransaction();

demoDao.update(...);

demoDao.update(...);

//提交事务

JDBCUtil.commitTransaction();

} catch (SQLException e) {

//事务回滚

JDBCUtil.rollbackTransaction();

}

}

}

下面对JDBCUtil.java类的优化,让以前在dao层的东西,现在封装到JDBCUtil中,以实现在service层的调用。

2、JDBCUtil处理多线程并发问题(以前在dao层可以处理高并发的事件,现在在service层也要处理高并发的事件)

JDBCUtil工具类优化

当有多个线程操作JDBCUtil中的Connection对象时,就会出现并发问题,可以使用ThreadLocal来解决这个问题。

 

总结:

数据库中数据的增删改查高并发时:用数据连接池来解决

JDBC事务以前是放在dao层现在放在service层,JDBCUtil处理事务多线程并发问题:当有多个线程操作JDBCUtil中的Connection对象时,就会出现并发问题,可以使用ThreadLocal来解决这个问题。

 

 

表示层-------->业务逻辑层---------->持久层------->数据库/硬盘

jsp/html------->java/php/asp-------->jdbc/dao------>mysql/oracle

view----------->service-----jdbcutil----->dao---------->mysql/Oracle

 

 

现在处理事务直接用jdbutil,直接写在service层。再使用dao层操作数据库。

以前是没在service层写,在dao层调用,使用connection对象的方法处理事务。

 

 

dbutil工具是优化dao层的操作。增删改数据进行封装优化,方面增删改数据。对查询数据进行封装优化,方面查询处理数据。

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(RJ)