zoukankan      html  css  js  c++  java
  • JDBC初识以及使用

    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

     


  • 相关阅读:
    CSS居中布局
    Dubbo源码学习(二)
    golang实现chunk方式的查询
    吴裕雄--天生自然 PHP开发学习:MySQL 插入数据
    吴裕雄--天生自然 PHP开发学习:连接 MySQL、创建表
    吴裕雄--天生自然 JAVA开发学习:基础语法
    吴裕雄--天生自然 PHP开发学习:高级
    吴裕雄--天生自然 PHP开发学习:多维数组
    吴裕雄--天生自然 PHP开发学习:表单
    吴裕雄--天生自然 PHP开发学习:表单
  • 原文地址:https://www.cnblogs.com/gflb/p/10891254.html
Copyright © 2011-2022 走看看