• 【Mysql】第8篇--数据库元数据


    数据库元数据

    String sql = "insert into product values(null,?,?) ";
    1.根据sql语句相关的元数据: ParameterMetaData
    	可以获取sql语句中 ? 的个数
    	还可以获取 ? 所对应值的类型(mysql不支持)
    2.跟返回值相关的元数据:  ResultSetMetaData
    	String sql = "select * from product where id = 1 ";
    	返回值有几列
    	字段的名称分别是什么
    	字段类型分别是什么
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    元数据:数据库、表、列的定义信息

    ParameterMetaData

    作用:

    ​ 获取PreparedStatement所编译的sql语句中 ? 的个数和类型

    ​ String sql = "select * from user where username = ? and password = ? ";

    ​ PreparedStatement pst = conn.PrepareStatement(sql);

    API

    ​ PrepareStatement. getParameterMetaData();

    ​ int getParameterCount()
    ​ 获取PreparedStatement的SQL语句参数?的个数

    ​ int getParameterType(int param)

    ​ 获取指定参数的SQL类型。

    ​ 不是所有的数据库都支持,mysql不支持

    使用:

    ​ 获取 ParameterMetaData 对象

    ​ 使用对象调用方法

    注意实现

    ​ 不是所有的数据库驱动都能后取到参数类型(MySQL会出异常)

    ResultSetMetaData

    作用:

    ​ 可用于获取有关 ResultSet 对象中列的类型和属性的信息。

    ResultSetMetaData

    • 如何获取 ResultSetMetaData
      • ResultSet.getMetaData()
    • int getColumnCount()
      返回此 ResultSet 对象中的列数
    • String getColumnName(int column)
      获取指定列的名称
    • String getColumnTypeName(int column)
      获取指定列的数据库特定类型名称
    • 使用步骤
        1. 获取 ResultSetMetaData 对象
        1. 使用对象调用方法

    自定义一个方法完成增删改操作:

    
    
    • 1

    三层架构

    是什么?

    ​ 将代码分层处理

    作用

    ​ 高内聚,低耦合

    ​ 高内聚: 一个方法只专注于做一件事情

    ​ 低耦合: 类与类 或 方法与方法之间的关系比较弱

    suanShu(int i,int j,String fuhao){
        if("+".equals(fuhao)){
            i+j;
        }...
    }
    A:aa(){
    		B b = new B();
    		
        }
    B:bb(){
    		new Driver(); // 和Driver类存在耦合
    		Class.forName("com.mysql.....");
    		Class.forName(读取配置文件);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    1. 解耦:降低层与层之间的耦合性。
    2. 可维护性:提高软件的可维护性,对现有的功能进行修改和更新时不会影响原有的功能。
    3. 可扩展性:提升软件的可扩展性,添加新的功能的时候不会影响到现有的功能。
    4. 可重用性:不同层之间进行功能调用时,相同的功能可以重复使用。

    分层结构

    ​ 表示层(view|web|controller)

    ​ 业务处理层(service)

    ​ 数据访问层(dao- Data Access Object)

    ​ 工具类 (utils)

    ​ JavaBean (domain | entity)

    ​ User | Student | Product …

    java使用不同的包来区分不同的层.

    使用三层架构思想完成用户注册功能:

    需求分析:
    	程序启动后,在view层提示用户输入用户名和密码,当用户输入完用户名时,获取用户输入的用户名,调用service处理业务逻辑,service调用dao查询当前用户名是否被占用.
        查询结果:
    		当前用户名已存在: 提示当前用户名已被占用,请重新输入(程序重新开始)
    		当前用户名不存在: 提醒用户输入密码,程序继续
    	当用户输入完密码后,调用service完成用户注册的业务逻辑,调用dao完成用户注册(添加)
    
    环境搭建:
    	1.创建数据库表
    	2.创建java项目和包结构(view,service,dao...)
        3.导入jar包(jdbcTemplate,druid,mysql )
    	4.导入工具类
    	5.导入配置文件(修改)
            
            
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    本地部署大语言模型
    数据库管理-第四十期 基于Oracle 19c RAC的IPv6改造(20221019)
    java-php-net-python-房产交易资金管理系统计算机毕业设计程序
    freertos初体验 - 在stm32上移植
    数仓建模—埋点设计与管理
    jQuery中ajax的使用
    【STL】map/multimap容器
    Android 9 MTK 更改系统的版本号
    交换二叉树中所有结点的左右结点
    点云从入门到精通技术详解100篇-基于3D点云的曲面文字检测(续)
  • 原文地址:https://blog.csdn.net/qq_41250372/article/details/125462463