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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 sun2ice 于 2018-1-23 14:48 编辑

day 03
## Properties配置文件:
*    键值对保存
*    建议放在src目录下
    *    driverClass = com.mysql.jdbc.Driver
    *    url=jdbc:mysql://localhost:3306/mybase
    *    username=root
    *    password=123456


## Properties配置文件: 使用类加载器加载文件

* 回忆Java的编译原理和内存机制:
    * src下存放java文件, 编译后生成class文件到bin目录下
    * src下的其他文件, 编译后也会复制到bin目录下
    * 程序运行时, 要使用一个类, 必须先加载类到内存中, 所以就会使用`类加载器`将要用的类的字节码加载到方法区中
    * 所以使用类加载器, 同样可以找到bin目录下的其他文件
* 加载bin目录下文件的方式:
    * 获取任意一个类的类加载器:
        1. 获取任意一个类的字节码对象: `类名.class`
        2. 使用该字节码对象获取该类的类加载器: `字节码对象.getClassLoader()`
            * 简化写法: `类名.class.getClassLoader()`
    * 使用ClassLoader对象的`InputStream getResourceAsStream("bin目录下的文件相对路径")`方法加载, 获取InputStream对象
    * 创建Properties对象, 调用`load(InputStream in)`方法加载数据
* 注意:
    * properties文件放在bin目录下就可以, 不要放在包下. 如果放在包下, 还要写上包的路径


## DBUtils工具类介绍, 三个核心类: 一个更好的JDBC工具类
* 是Apache的Commons项目中的组件, 用于简化JDBC的开发.
* 三个核心类/接口
```
QueryRunner类: 提供操作SQL语句的API
    int update(Connection conn, String sql, Object... param)`:
        执行INSERT, DELETE, UPDATE语句, 同时传入占位符的参数值, 是可变参数
    <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params):
        执行SELECT查询, 并根据传入的结果集处理器来处理结果
```
```
ResultSetHandler接口: 定义SELECT操作后对结果集的操作方法, 可以将结果集转换为Java类
    ArrayHandler类: 将结果集的第一条记录封装到一个Object[]数组中, 数组中的一个元素就是该条记录中的一个字段值
  * ArrayListHandler类: 将结果集中的每一条记录都封装到一个Object[]数组中, 再讲这些数组封装到List集合中
    BeanHandler`类: 将结果集中的第一条记录封装到一个指定的JavaBean中
  * BeanListHandler类: 将结果集中的每一条记录都封装到一个指定的JavaBean中, 再将这些JavaBean封装到List集合中
  * ColumnListHandler类: 将结果集中指定的列的字段值, 封装到一个List集合. 查一个列
  * ScalarHandler类: 用于单数据, 如SELECT COUNT(*) FROM 表的操作
    MapHandler类: 将结果集的第一条记录封装到一个Map中. key是列名, value是第一条记录的每个字段的值
  * MapListHandler类: 将结果集的每一条记录封装到一个Map中. key是列名, value是第一条记录的每个字段的值. 然后再将这些Map封装到一个List中
```
```
DbUtils类: 用于关闭资源和事务处理
    static void closeQuietly(Connection conn): 关闭连接, 内部处理了异常
```


#day 04
##连接池
*    一次性创建多个连接对象,存在一个集合中,当需要连接数据库时, 不用再创建新的, 而是直接从连接池中拿出来用, 用完再放回连接池内待用.

## 登录注册案例: 创建包, 类

* DAO:
    * Data Access Object, 数据访问对象, 专门用于操作数据库


# day 05
##分层交互流程图

*    view层作用: 视图层,即项目中的界面
*    controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理
*    service层作用: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理
*    dao层作用: 数据访问层, 用来操作数据库表的数据
*    db数据库: 这里指MySQL
*    domain 实体包: 存放JavaBean
*    tools工具包:存放项目中使用到的工具类
*    test 测试包: 存放项目功能测试的代码


##设计模式(java共23种)
*    实际软件开发,对问题的处理总结经验称为设计模式
*    单例模式(singleton)
    *    保证一个类的对象的唯一性
        
```
单例模式之饿汉式不存在线程不安全
private Single () {} 构造器
private static final Single s = new Single();
public static Single getInstance(){
return s;
}

```
```
单例模式之懒汉式    安全
private static SafeLazySingleton instance = null;
private  SafeLazySingleton() {
}
public static SafeLazySingleton getInstance() {
    if (instance == null) {
        synchronized (SafeLazySingleton.class) {
            if (instance == null) {
                instance = new SafeLazySingleton();
            }
        }
    }
    return instance;
}
```

0 个回复

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