1、认识JDBC
Java DataBase Connectivity (Java数据库连接)
JDBC是一个规范,并没有实现功能,具体的功能实现是由各个数据库厂商
注意:JDBC是连接数据库与JAVA的唯一技术,其他的方式底层都是JDBC
2、HELLO JDBC
一、首席要进行导包,将对应数据库的时限包进行导入
二、代码口诀: 贾琏欲执事
① 贾 : 加载驱动 Driver
方式一: 创建驱动对象,再手动进行注册
方式二: 反射读取,自动注册 (Class.forname())
② 琏 : 获取连接 connection
③ 欲 : 获取语句对象 Statement
④ 执 : 执行sql execute
⑤.事 : 释放资源 close (从小到大,从里到外)
3、使用JDBC完成增删改查(CRUD)
增加数据
//增加数据
@Test
public void testAdd() throws Exception {
//贾琏欲执事
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/java0827", "root", "652301");
Statement cr = conn.createStatement();
cr.executeUpdate("insert into t_user02(姓名,sex) values ('小红',0)");
cr.close();
conn.close();
}
修改数据
@Test
public void testUpdate() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///java0827", "root", "652301");
Statement cr = conn.createStatement();
cr.executeUpdate("update t_user02 set 姓名 = '花花' where id = 2");
cr.close();
conn.close();
}
删除数据
//删除数据
@Test
public void testDelete() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///java0827", "root", "652301");
Statement cr = conn.createStatement();
cr.executeUpdate("delete from t_user02 where id = 1");
cr.close();
conn.close();
}
查询数据
@Test
public void testFindAll() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///java0827", "root", "652301");
Statement cr = conn.createStatement();
ResultSet ex = cr.executeQuery("select * from t_user02");
// System.out.println(ex);//com.mysql.jdbc.JDBC4ResultSet@32cf48b7
while (ex.next()) {
String string = ex.getString("姓名");
boolean sex = ex.getBoolean("sex");
Date date = ex.getDate("生日");
System.out.println(string + "," + sex + "," + date);
}
// 释放资源
ex.close();
cr.close();
conn.close();
}
标准写法
/**
* 查询员工所有信息标准格式
* 贾琏欲执事
*/
@Test
public void testQueryAll() {
// 为了在finally中顺利关闭,需要声明在外部
Connection conn = null;
Statement cr = null;
ResultSet ex = null;
try {// 5、保证一定能释放资源
// 1、贾:加载驱动(Driver)
Class.forName("com.mysql.jdbc.Driver");
// 2、琏:建立连接(connection)
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java0827", "root", "652301");
// 3、欲:获取语句对象(statement)
cr = conn.createStatement();
// 4、执:执行sql语句
ex = cr.executeQuery("select * from t_user02");
while (ex.next()) {
String string = ex.getString("姓名");
boolean sex = ex.getBoolean("sex");
Date date = ex.getDate("生日");
System.out.println(string + "," + sex + "," + date);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 5、事:释放资源(从小到大)
// 还需要进行判断,万一其中一个没有执行到,保证每一个都会被关闭
try {
if (ex != null) {
ex.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (cr != null) {
cr.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
4、domain和DAO实现
java中的三层结构: 表现层 controller、 业务层 service、 数据层 DAO
一、JDBCUtil工具包的写法
三块:
①、驱动只需要注册一次
②、准备一个或者直接获取到 Connction 的方法
③、准备一个关闭资源的方法
二、 Domain的创建
是用于三层之间数据传输的一个实体类,按照标准的 JavaBean 要求。
三、DAO的完成
注意事项:
①、准备dao包 cn.itsource.dao
这个包中写的是接口
接口的名称规范: IXxxDao 例: IUserDao,IEmployeeDao,IDepartmentDao
②、 准备dao的实现包 cn.itsource.dao.impl
这个包中是接口的实现
类名的名称规范: XxxDaoImpl 例: UserDaoImpl,EmployeeDaoImpl,Department DaoImpl