JDBC初识以及使用
Posted gflb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC初识以及使用相关的知识,希望对你有一定的参考价值。
JDBC
1. Jdbc概述
问题:实际开发中,不可能用工具或者命令行操作数据库,数据库表中的数据最终要使用Java程序来操作,那么Java中如何操作数据库中的数据呢?
答 : 在Java语言中,有一个专门连接数据库的规范(JDBC),专门负责连接数据库进行数据操作的规范
JDBC只是SUN编写的一堆接口(规范的体现),SUN公司自己并没有实现
问题 : 为什么SUN只定义一个JDBC规范,而不实现呢?
答 : 因为市面上的数据库很多,每个数据库内部接口不会向外暴露,而且即便是暴露让SUN去实现,市面上很多数据库全部要SUN来实现不现实
实际中哪个数据库需要支持JAVA语言,就需要自己实现Java的JDBC规范,因为实现了JDBC很多接口,那么就会有很多实现类,而很多实现类在java中会使用一个专门的包封装起来,叫做jar包(在JDBC中叫做驱动包),各大数据库产商实现JDBC规范以后都会把他们jar包放在官网上以供开发者下载使用
jdbc:
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基
JDBC规范对应的api包
创建普通java项目
在项目下面新建一个lib目录
将mysql驱动包拷贝到项目中并添加依赖
获取数据库连接对象
1. 创建表-DDL操作
在其他操作之间先要把数据库表要创建出来
public static void main(String[] args) throws Exception {
String sql = "create table t_student (id int primary key auto_increment,name varchar(50),age int)";
//贾琏欲执事
//1,加载注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2,获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
//3,创建语句对象(用于执行SQL语句的对象)
Statement st = conn.createStatement();
//4, 执行SQL语句
//int rows = st.executeUpdate(String sql);执行DDL和DML语句,放回的是受影响的行数
//ResultSet res = st.executeQuery(String sql);执行DQL查询语句,返回的结果集对象
st.executeUpdate(sql);
//5,释放资源(先开后关)
st.close();
conn.close();
}
查询操作的分析
预编译语句对象PreparedStatment
问题 : 我们有了Statment对象可以执行SQL,为什么还要使用PreparedStatment?
优势
- SQL语句结构清晰,参数的设置和SQL语句分离
- 性能更高
- 防止SQL注入
Statement: 表示静态SQL语句对象. PreparedStatement:Statement的子接口,表示预编译SQL语句对象. 通过占位符(?)来拼SQL. |
创建PreparedStatement
创建语句对象 Statment
执行SQL语句的方法
Statment
在执行SQL语句的时候回带上SQL语句
PreparedStatement
在执行SQL语句的方法中不需要设置SQL语句
设置站位参数的值
void setXxx(int parameterIndex,Xxx value):用于设置占位符参数, parameterIndex:第几个问号. 注意:从1开始. value:设置的真实值. Xxx:表示数据类型.String/int/long/Double/Date |
2. 开发的分层设计-三层架构
DAO层设计
实际开发中,JavaWeb开发代码一般分为三层,分层结构是JavaWeb开发中的一种设计思想,这样会让我们开发层次分明,每一层只要完成对应的功能即可,使得项目便于开发和维护
1 . Web层/表现层 : 主要接受前台浏览器用户的参数,给浏览器响应数据等等
- Service层/业务成/服务层:主要处理业务功能,日志,权限,事物,等等
- DAO层/持久层 :专门负责和数据库交互,数据处理相关代码
DAO : Data Access Object 数据访问对象
实际开发中 : 用户请求到-Web层--->Service层-->DAO层
使用DAO以后代码的以及包的设计结构
开发中如果使用的分层,编写的包和类名接口名等等都是有固定规则,不能随便瞎写
1.1.1. DAO层接口包命名
公司域名倒写+项目名称/模块名称+dao 如 : cn.sxt.crm.dao |
1.1.2. DAO层实现类包命名
公司域名倒写+项目名称/模块名称+dao+impl 如 : cn.sxt.crm.dao.impl |
1.1.3. DAO层操作对应表的接口命名
对应表的名称 + Dao/DAO
如 : StudentDao/DAO , TeacherDao/DAO |
1.1.1. DAO层操作对应表的实现类命名
对应表的名称 + Dao/DAOImpl
如 : StudentDaoImpl/DAOImpl , TeacherDaoImpl/DAOImpl |
1.1.2. 数据表对应的Java类domain/pojo包命名
POJO(Plain Ordinary Java Object)简单的Java对象
domian : 域对象
公司域名倒写+项目名称/模块名称+domain/pojo 如 : cn.sxt.crm.domain |
1.1.3. 对应的测试包命名
公司域名倒写+项目名称/模块名称+test 如 : cn.sxt.crm.test |
1.1.4. 项目的工具类包命名
公司域名倒写+项目名称/模块名称+util/utils 如 : cn.sxt.crm.util/utils |
以上是关于JDBC初识以及使用的主要内容,如果未能解决你的问题,请参考以下文章