1.回顾
①List,Set是继承自Collection接口,Map没有继承自Collection;
List:有序,允许重复;
Set:无序,不允许重复;
Map:键值对集合,键值不能重复,可以有一个null值
②ArrayList和LinkedList、HashMap和HashTable的区别:
ArrayList:动态数组,查询快,插入删除慢;
LinkedList:链表,数据的插入和删除效率高;
HashMap:线程不安全,轻量级;
HashTable:线程安全,效率低。
2. JDBC的使用
2.1 jdbc简介
jdbc(java database connectivity):java数据库连接技术,java应用操作数据库技术的简称。
2.2 工作原理分析
jdbc api:java厂商规定数据库驱动的标准(接口),数据库厂商(mysql,oracle,sqlsever)提供驱动的具体实现(数据库jar包,统称为数据库驱动)。
DriverManager:驱动管理类
jdbc驱动:mysql驱动,sqlserver驱动,oracle驱动,连接不同的数据库使用不同的驱动包(jar)。
2.3 常用的API介绍
DriverManager(类):加载管理驱动
Connection:建立连接
Statement:执行命令并返回结果
ResultSet:结果集
2.4 导入mysql驱动包
8.0 jar包:阿里云盘分享
①复制mysql驱动包到项目中
新建一个目录(directory)一般命名为lib,再将驱动粘贴到里边;
②将jar包导入到项目(即和项目关联)
2.5 连接数据库并实现增删改查
/**
* java连接数据库
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void test() throws ClassNotFoundException, SQLException {
//数据库驱动接口,可以创建数据库连接
//Driver driver = null;
//数据库连接接口,用于跟数据库之间搭建桥梁,并能创建命令执行的对象
Connection con = null;
//sql命令执行接口,用于执行增删改查语句,执行查询时会返回结果集对象
Statement statement = null;
//结果集接口,用于读取查询结果
ResultSet r = null;
/**
* 数据库连接属性
* url:数据库地址
* useSSL:是否加密传输
* characterEncoding:字符编码
* serverTimezone:时区
*/
String url = "jdbc:mysql://127.0.0.1:3306/test_0720_1?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
//user:数据库用户名
String user = "muxiaowen";
//password:数据库密码
String password = "123456";
/**
* 使用Java的驱动管理类加载数据库驱动,从而获取连接对象
* 使用反射的方式,将驱动类加载到jvm中
*/
Class.forName("com.mysql.cj.jdbc.Driver");
//使用数据库驱动管理类,获取连接对象
con = DriverManager.getConnection(url,user,password);
//查询数据
String sql = "select * from bank";
//通过连接对象创建命令执行对象
statement = con.createStatement();
//查询数据并接收返回的结果集对象
r = statement.executeQuery(sql);
/**
* 使用结果集对象读取查询结果
* next():是否有下一条数据(true/false)
*/
while(r.next()){
System.out.println(r.getInt(1)+" "+r.getString(2)+" "+r.getInt("money"));
}
//插入数据
sql = "insert into bank value (4,'赵六',6000)";
//返回的是数据库受影响的数据条数
int count = statement.executeUpdate(sql);
System.out.println(count);
//删除数据
sql = "delete from bank where bid = 4";
count = statement.executeUpdate(sql);
System.out.println(count);
//关闭数据库连接(后开先关),释放资源
r.close();
statement.close();
con.close();
}
方法 | 说明 |
executeUpdate(sql) | 执行增删改操作,返回受影响的数据条数 |
executeQuery(sql) | 执行查询操作,返回ResultSet结果集对象 |
方法 | 说明 |
next() | 在结果集中,下移一条数据 |
getObject(列索引) | 获取某个列的数据,以对象类型返回 |
getString(索引) | 获取某个列的数据以字符串类型返回 |
getString(列名) | 根据列名返回某个列的数据,以字符串类型返回 |
2.6 junit
测试工具类,可以在一个类中定义多个方法,批量执行。
②在类中定义普通方法;③在普通方法上添加@Test 注解;④选中方法名,右键执行。
package com.wen.test;
import org.junit.Test;
/**
* @author :muxiaowen
* @date : 2022/7/21 16:04
*/
public class MyTest {
@Test
public void MyTest(){
System.out.println("Hello Junit!");
}
}