码迷,mamicode.com
首页 > 数据库 > 详细

JDBC初识以及使用

时间:2019-05-19 23:19:24      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:ram   cer   如何   个数   key   getc   三层   row   分层   

 

JDBC

1. Jdbc概述

问题:实际开发中,不可能用工具或者命令行操作数据库,数据库表中的数据最终要使用Java程序来操作,那么Java中如何操作数据库中的数据呢?

 

Java语言中,有一个专门连接数据库的规范(JDBC),专门负责连接数据库进行数据操作的规范

 

JDBC只是SUN编写的一堆接口(规范的体现),SUN公司自己并没有实现

 

 

问题 为什么SUN只定义一个JDBC规范,而不实现呢?

 

因为市面上的数据库很多,每个数据库内部接口不会向外暴露,而且即便是暴露让SUN去实现,市面上很多数据库全部要SUN来实现不现实

 

实际中哪个数据库需要支持JAVA语言,就需要自己实现JavaJDBC规范,因为实现了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

 

优势

  1. SQL语句结构清晰,参数的设置和SQL语句分离
  2. 性能更高
  3. 防止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/表现层 : 主要接受前台浏览器用户的参数,给浏览器响应数据等等

  1. Service/业务成/服务层:主要处理业务功能,日志,权限,事物,等等
  2. 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. 数据表对应的Javadomain/pojo包命名

POJOPlain 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初识以及使用

标签:ram   cer   如何   个数   key   getc   三层   row   分层   

原文地址:https://www.cnblogs.com/gflb/p/10891254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!