A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施主 初级黑马   /  2019-4-4 13:36  /  655 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

SQL 数据库

基础加强

Junit单元测试

- 测试分类:黑盒(关注结果),白盒(关注过程)。
- Junit使用:白盒测试
- 使用建议
  - 建议测试类名:被测试的类名Test
  - 方法名:test测试的方法名
  - 返回值:void
  - 参数列表:空参
  - 给方法加@Test
- 补充:
  - @Before: 测试前执行
  - @After: 测试后执行

反射:框架设计灵魂

1. 反射: 将类中的各个组成部分封装为其他对象。(将已经加载进内存里运行的类获取出来,使其透明化)
2. 优点:
   1. 可以在程序运行过程中,操作这些对象。
   2. 可以解耦,提高程序的可扩展性。
3. 获取class对象的方式:
   1. Class.forName(全类名):多用于配置文件。此时该类还是源文件状态,并没有字节码文件。
   2. 类名.class:多用于参数传递。该类处于字节码阶段,相当于获取自己。
   3. 对象.getClass():多用于对象的获取字节码方式。该类处于创建对象阶段。
4. 特例: 利用反射,在泛型为int的arryaList集合中存放一个String类型的对象。

实现原理:泛型只在编译期有效,到了运行期,泛型将会失效。

`
List<Integer> list = new ArrayList<
List<Integer> list = new ArrayList<Integer>();
        

    list.add(1);
        list.add(3);
       // list.add("aaaa");  // 在编译期报错
        Class aClass = list.getClass();
        try {
            Method add = aClass.getMethod("add", Object.class);
            add.invoke(list,"aaaa");
            System.out.println(list);
        } catch (Exception e) {
            e.printStackTrace();
        }

`

数据库

SQL

概念: 使用统一的方式操作数据库。

SQL分类

DDL:数据库定义语言

1. 操作数据库:CRUD
2. 操作表:
   1. 创建表:
      create table 表名(
                列名1 数据类型1,
                列名2 数据类型2,
                ....
                列名n 数据类型n
        );
   2. 复制表:
      create table 表名 like 被复制的表名;

       

DML:数据库操作语言

1. 添加数据: insert         into         表名() values()
2. 删除数据: delete         from                 表名         where         条件
   - 如果要清空数据建议用:         TRUNCATE TABLE 表名        提高效率
3. 修改数据: update         表名        set         列名=值          where        条件

DQL: 数据库查询语言####

1. 语法
   select
        字段列表        // 想要查询的内容
        from
                表名列表
        where                //        数据来源
                条件列表
        group by
                分组字段
        having
                分组之后的条件
        order by
                排序
        limit
                分页限定       
2. 去重:distinct
3. 运算去null: ifnull(需要除null的列 , 替代值)
4. 条件查询(运算符):
       
   - 、< 、<= 、>= 、= 、<> ,!=
     - BETWEEN...AND  
     - IN( 集合)
     - LIKE:模糊查询
       - 占位符:
         - _:单个任意字符
         - %:多个任意字符
     - IS NULL  
     - and  或 &&
     - or  或 ||
     - not  或 !

查询语句:

1. 排序查询:order by         +        条件         +        方式(ASC升/DESC降)
2. 聚合函数:
   1. count:计算个数
      1. 一般选择非空的列:主键
      2. count(*)
   2. max:计算最大值
   3. min:计算最小值
   4. sum:计算和
   5. avg:计算平均值
3. 分组查询:
   1. where        和        having        的区别
      1. where在分组前进行限定,having在分组后进行限定。
      2. where 后不跟聚合函数,having可以进行聚合函数的判断。

约束

1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key

数据库设计

分类:

1. 一对一
2. 一对多(多对一)
3. 多对多

多表查询

- 多表查询分类
  1. 内连接查询
     1. 隐式内连接:使用where条件消除无用数据
        - 语法: select 字段列表 from 表名1 ,表名2 where 条件       
     2. 显式内连接:
        - 语法: select 字段列表 from 表名1 [inner] join 表名2 on 条件
  2. 外链接查询:
     1. 左外连接:
        - 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
        - 查询的是左表所有数据以及其交集部分。
     2. 右外连接:
        - 语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
        - 查询的是右表所有数据以及其交集部分。
     3. 子查询:
        - 概念:查询中嵌套查询,称嵌套查询为子查询。
        - 子查询不同情况
          - 子查询的结果是单行单列的:作为数值条件
          - 子查询的结果是多行单列的:作为数组条件
          - 子查询的结果是多行多列的:作为新表

事务

1. 概念: 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2. 操作:
   1. 开启事务: start transaction;
   2. 回滚:rollback;
   3. 提交:commit;
3. 特性:原子性、持久性、隔离性、一致性。

JDBC

1. 概念: Java语言操作数据库
2. 步骤:
   1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
      1. 复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
      2. 右键-->Add As Library
   2. 注册驱动
   3. 获取数据库连接对象 Connection
   4. 定义sql
   5. 获取执行sql语句的对象 Statement
   6. 执行sql,接受返回结果
   7. 处理结果
   8. 释放资源
3. 代码实现
   //1. 导入驱动jar包
     //2.注册驱动
             Class.forName("com.mysql.jdbc.Driver");
     //3.获取数据库连接对象
             Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
     //4.定义sql语句
                     String sql = "update account set balance = 500 where id = 1";
     //5.获取执行sql的对象 Statement
                     Statement stmt = conn.createStatement();
     //6.执行sql
             int count = stmt.executeUpdate(sql);
     //7.处理结果
          System.out.println(count);
     //8.释放资源
        stmt.close();
        conn.close();

JDBC工具类:JDBCUtils

使用:

1.获取连接对象:        JDBCUtils.getConnection();

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马