黑马程序员技术交流社区
标题:
【石家庄校区】JavaEE个人学习总结3day03-04
[打印本页]
作者:
sun2ice
时间:
2018-1-11 15:48
标题:
【石家庄校区】JavaEE个人学习总结3day03-04
本帖最后由 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;
}
```
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2