本帖最后由 逐野 于 2018-1-11 15:24 编辑
【石家庄校区】知识点总结
XML
文档声明:
XML第一行为文档声明,如:<?xml version="1.0" encoding="GB2312"?>编码默认为UTF-8
standalone属性说明文档是否独立,即是否依赖其他文档,属性为yes或者no
元素:
XML元素指XML文件中出现的标签.
包含标签体:<age>18</age>
不含标签体:<Student name="zhangsan" age="18"/>
注意:XML中只能有一个根标签
注释:
只能写在文档声明的下面
注释不能嵌套注释
CDATA区
格式:<![CDATA[文本]]>
特殊字符
& &
< <
> >
" "
' '
处理指令
以<?作为开关,?>作为结尾.
<?XML-stylesheet type="text/css" href="some.css"?>
约束:
XML文件使用<!DOCTYPE 根标签名 SYSTEM "路径文件名">引用本地约束
<!DOCTYPE 根标签名 public "DTD名称" "DTD文档的URL">引用网络约束
DTD约束:
编码只能是UTF-8
使用<!ELEMENT 标签名(子标签+(+表示一次或多次)) )约束
(#PCDATA)定义的标签的内容格式为普通字符串
EMPTY:用于指示元素的主体为空.比如<br/>
ANY:用于指示元素的主体内容为任意类型
(子元素):指示元素中包含的子元素
元素个数
(子标签1,子标签2...(必须按顺序写))
(子标签1|子标签2...(任选其一))
如果元素后面没有+*? 表示必须且只能出现一次
+表示至少一次,或者多次
*表示可有可无
?也表示可有可无,有的话只能有一次
属性值类型:
CDATA:表示属性的取值为普通的文本字符串
ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
ID:表示属性的取值不能重复
设置说明
#REQUIRED:表示该属性必须出现
#IMPLIED:表示该属性可有可无
#FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"
直接值:表示属性的取值为该默认值
Schema约束:
引用方式:
<根标签名
xmlns:itheima="http://www.itheima.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itheima.com book.xsd0"
>
</根标签名>
JDBC
SQL分类
数据定义语言:简称DDL,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
数据操作语言:简称DML,用来对数据库中表的记录进行更新。关键字:insert,delete,update等
数据控制语言:简称DCL,用来定义数据库的访问权限和安全级别,及创建用户。
数据查询语言:简称DQL,用来查询数据库中表的记录。关键字:select,from,where等
SQL语法特点:
SQL语句可以单行或多行书写,以;结尾
可使用空格和缩进来增强语句的可读性
MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user。
同样可以使用/**/的方式多行注释
#单行注释
-- 单选注释(空格不能少)
字符串和日期要使用''单引号或""双引号包裹,推荐单引号
SQL数据类型
int 整型
double 浮点型
varchar 字符串型(可变字符型)
date 日期类型,只有年月日,没有时分秒
time 时间类型
datetime 日期时间类型
SQL语句
CREATE DATABASE 数据库名 (CHARACTER SET 字符集);
SHOW DATABASES; 显示所有数据库
SHOW CREATE DATABASE 库名;查看该库的信息
DROP DATABASE 数据库名;删除数据库
USE 库名;使用库
SELECT DATABASE();查看当前正在使用的数据库
创建数据表
CREATE TABLE 表名(
列名1 数据类型(长度) 约束,
列名2 数据类型(长度) 约束,
...
)
约束:
主键:PRIMARY KEY,限制该列的记录值不能为空且唯一,相当于同时设定了NOT NULL和UNIQUE
非空:NOT NULL
自增:AUTO_INCREMENT,设置该列的记录值可以自动增加(只能用于数据类型)
唯一:UNIQUE:不能重复
外键:FOREIGN KEY,主要是连接加一个表的主键
检查:CHECK(条件),限制该列插入的记录值是否符合要求
默认值:DEFAULT,限制该列记录如果没有插入值,则使用默认值
SHOW TABLES:查看库中的所有表
DESC 表名:查看表结构
DROP TABLE 表名:删除表
DOS命令行乱码
临时:set name 'gbk';(将数据库数据修改为Windows的GBK)
增删改
修改表名:
RENAME TABLE 表名 TO 新名;
修改表的字符集:
ALTER TABLE 表名 CHARACTER SET 字符集;
列
添加列,添加字段:
ALTER TABLE 表名 ADD 列名 数据类型 约束;
修改列:
ALTER TABLE 表名 MODIFY 列名 数据类型 约束;
修改列名:
ALTER TABLE 表名 CHAGE 旧列名 新列名 数据类型 约束;
删除列:
ALTER TABLE 表名 DROP 列名;
添加数据
一次添加单条:
INSERT INTO 表名(列名1,列名2,列名3....) VALUES (值1,值2,值3)
添加数据格式,所有值全给出
INSERT INTO 表名 VALUES (全列值)
一次添加多条:
INSERT INTO 表名(列名1,列名2,列名3...) VALUES(值1,值2,值3),(值1,值2,值3),...
注意:
列名,表名问题
对应问题,个数,数据类型
更新(修改)数据
UPDATE 表名 SET 列1=值1,列2=值2....WHERE 条件;
删除数据
DELETE FROM 表名 WHERE 条件;
清空数据:
DELETE FROM 表名;
逐条删除记录,不会重置自增计数器
TRUNCATE TABLE 表名;
全部删除记录,重置自增计数器
查询数据
普通查询:
查询指定列的数据
SELECT 列名1,列名2 ... FROM 表名;
查询所有列的数据
SELECT * FROM 表名;
去重查询
SELECT DISTINCT 列名 FROM 表名;
#如果多个列,则按照多个列组合去重
查询重新命名列
SELECT 列名 AS 临时列名 FROM 表名 AS 临时表名;
在查询数据中,可以直接进行数学计算
条件查询:
即按指定条件查询记录返回符合条件的结果集, 使用SELECT和WHERE组合
作用: 条件子句, 过滤符合条件的结果
运算符
比较运算符
=: 相等
<>或!=: 不等
>: 大于
<: 小于
>=: 大于等于
<=: 小于等于
BETWEEN...AND...: 在一个范围内(包含头和尾), BETWEEN 0 AND 10; 0~10
IN (): 在列表中, 满足列表中一个即可
如: IN (1, 3, 5)
IS NULL: 是空
LIKE 通配符`: 模糊查询
通配符种类
%: 一个百分号可以表示任意个字符. 比如王%, 王大锤, 王五
_: 一个下划线可以表示一个字符. 比如王_, 只能匹配王五
逻辑运算符
AND: 与. 两边条件同时成立才成立
OR: 或. 两边条件只要有一个成立就成立
NOT: 非, 取相反结果
NOT BETWEEN ... AND ...: 不在范围内
NOT IN: 不在列表中
NOT LIKE: 不匹配
IS NOT NULL: 非空
日期也是可以比较的
对结果集进行排序
ORDER BY 列名 [DESC][ASC],列名 [DESC][ASC]
先过滤条件WHERE查询再排序
分组
GROUP BY 列名 [HAVING] 条件
分组必须跟随聚合函数
SELECT查询的时候,被分组的列,要出现在SELECT选择列的后面
聚合函数:
count:统计个数
sum:求和
avg:平均值,如果列中有空值,则忽略不算
max:求最大值
min:求最小值
DBUtils
可以操作事务,回滚
QuerRunner
update(Connection con,String sql,Object...param),用来完成表数据的增加,删除,更新操作
query(Connection con,String sql,ResultSetHandler r,Object...parm),查询数据
注意:query方法返回值,返回的值是泛型,具体返回值类型,跟随结果集处理方式变化
ResultSetHandler
ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
注意:JavaBean必须要有空参构造
ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
MapListHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
DBCP连接池
BasicDataSource:
实现了数据源的规范接口javax.sql.DataSource
设置连接的数据,必须设置
setDriverClassName
setUrl
setUsername
setPassword
Connection getConnection:获取连接对象
void setInitialSize(int size):初始连接数,连接池中最初的连接数
void setMaxActive(int n):最大连接数量,程序能够连接数据库的最大连接数量
void setMinIdle(int n):最小空闲连接,连接池中允许存在的最小空闲数量,如果小于该数量,则会创建新的连接,直到满足该最小空闲连接数
void setMaxIdle(int n):最大空闲连接,连接池中允许存在的最大空闲数量,如果超出该数量,则超出的空闲连接会被真实关闭
设计模式
设计模式:
实际的软件开发,对问题的处理总结经验,设计模式.
在JAVA中,一共有23种设计模式
分类
创建型
关系型
功能型
单例模式:
保证一个类的对象唯一性
饿汉式:
私有构造方法
在本类的成员位置,创建出自己类的对象
提供一个静态的方法getXXX(getInstance),获取单例对象
在多线程下安全
懒汉式(安全的,高效的应用):
私有构造方法
在本类的成员位置,定义自己类的变量赋值为空
提供一个静态的方法getXXX(getInstance),如果变量为空则创建自己类的对象,返回单例对象
在多线程并发下不安全
解决方式:
加锁:snychronizeda
在锁的外面加上非空判断,如果不为非空则不需要拿锁,这样可以提高运行的效率
工厂模式:
将所有的创建对象的任务,交给一个工厂实现
找工厂获取即可
简单工厂:
优点:方便创建对象
缺点:如果传入的对象没有找到,会出现空指针异常
工厂方法:
将每个对象,交给了各自工厂去创建
缺点:如果对象太多,那么工厂也太多
|
|