目录
- 什么是JDBC
- JDBC引入
- 持久化
- JDBC规范
- 使用JDBC完成CRUD
- JDBC创建表
- JDBC CRUD和优化
- DAO层的实现
什么是JDBC
JDBC引入
Java代码操作数据库的唯一技术:-- JDBC ( java database connection )
持久化
持久化(persistence):把数据保存到可掉电式存储设备(断电之后,数据还在,比如硬盘,U盘)中以供之后使用。
大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,
而持久化的实现过程大多通过各种关系数据库来完成。 mysql oracle
JDBC规范
JDBC(Java DataBase Connectivity(Java数据库的连接)):
是一种用于执行SQL语句(DML,DDL,DQL)的Java API,可以为多种关系数据库(oracle,mysql,SQL server)提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
JDBC规范的实现由数据库厂商完成,就是相应的jar包
使用JDBC完成CRUD
JDBC创建表
导包(可去数据库官网下载或者搜索引擎搜索下载),build path
/**
*navicat
* 1 输入账号密码产生连接
* 2.输入sql语句
* 3.执行sql语句
*
*java代码连接数据库JDBC
* 1.导入相应的jar包
* 2.写代码
* 贾 加载驱动 Driver
* 琏 连接数据库
* 欲 预编译sql
* 执 执行sql语句
* 释 释放连接
*/
public class JBDCTest {
// ctrl+1:提示
@Test
public void testName() throws Exception {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");
//预编译sql
Statement State= conn.createStatement();
//执行sql语句
String sql1="CREATE TABLE `student` "
+ "(`id` int(11) NOT NULL AUTO_INCREMENT,"
+ "`name` varchar(255) DEFAULT NULL,"
+ "`password` varchar(255) DEFAULT NULL ,"
+ "PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=254167"
+ " DEFAULT CHARSET=utf8;";
String sql2="insert into Student(id,name,password) values(1,'小弟弟Ÿ','123456')";
String sql3="delete from Student where id=1";
String sql4="update Student set name='王大川', password='1234' where id=2";
State.execute(sql4);
//释放连接 先开后关
State.close();
conn.close();
}
}
JDBC CRUD和优化
public class JBDCTest {
Connection conn=null;
Statement State =null;
ResultSet rs=null;
@Before //指定的test前执行
public void before() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");
}
@After //指定的test后执行
public void after() throws Exception {
if(rs!=null){
rs.close();
}
if(State!=null){
State.close();
}
if(conn!=null){
conn.close();
}
}
@Test
public void insert() throws Exception {
Statement State = conn.createStatement();
String sql="insert into Student(id,name,password) values(3,'小弟弟Ÿ','123456')";
State.execute(sql);
}
@Test
public void update() throws Exception {
Statement State = conn.createStatement();
//执行sal
State.execute("update Student set name='王大川', password='12345' where id=3");
}
@Test
public void delete() throws Exception {
//预编译sql
Statement State = conn.createStatement();
//执行sal
State.execute("delete from Student where id=3");
}
// 查询 的第一种方式
@Test
public void query() throws Exception {
Statement State = conn.createStatement();
ResultSet rs = State.executeQuery("select * from Student where id=2");
while (rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
}
// 查询 的第二种方式 --推荐使用
@Test
public void query2() throws Exception {
Statement State = conn.createStatement();
ResultSet rs = State.executeQuery("select * from Student where id=2");
while (rs.next()) {
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
System.out.println(rs.getString("password"));
}
}
}
DAO层的实现
DAO层介绍
门店 门店的接待员—> 售货员 --> 仓库管理员 (仓库)
Java 界面层 服务层 数据层
Controller service dao
Dao 具体怎么写
1 它是操作数据库的 ,所有里面写的代码全是和数据库操作有关系的东西.
2 和数据库操作我们一般就是 CRUD
3 我们要怎么写
A 新建一个DAO包 这个包下面就是放的DAO 相关的文件
B 建一个接口 这个接口要与它操作的数据库表对应( CRUD)
C 对DAO的接口进行实现 (实现他的CRUD) 放到 dao包下面的impl包里
我定义接口其实就是定义规范 定义我CRUD的规范
而实现就是写真正的CRUD的代码,这个代码主要写我要连接什么数据库?怎么链接?
------ mysql
------ DB2
------ XXX
Domain 收集数据库返回的数据
其他见工程