1.前一天重点内容复习
反射获取类中构造方法对象并去创建该类实例
获得构造方法对象:
public Constructors<?>[] getConstructors() throws SecurityException:获取类中所有的公共构造方法的类对象
public Constructors<?>[] getDeclaredConstructors() throws SecurityException:获取类中所有的构造方法的类对象
public Constructor<T> getConstructors(Class<?> parameterTypes) throws NoSuchMethodException,SecurityException:获取类中指定的公共构造方法的类对象,参数为字节码文件对象
创建实例:
public T newInstance(Object... initargs):创建当前类的实例,参数为可变参数,作用为描述给构造方法的实际参数,这个方法可以由字节码文件对象调用,也可以先创建构造方法类对象,再用构造方法类对象来调用此方法
反射获取类中成员方法对象并去调用该方法
获得成员方法:
public Method[] getDeclaredMethods() throws SecurityException:获取当前类中所有成员方法,不包括继承方法
public Method[] getMethods() throws SecurityException:获取当前类中所有公共的成员方法,包括继承方法
public Method getMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法,参数1为方法名,参数2为可变参数,如果无参则不需要,如果带参则需要写上参数类型的class
public Method getDeclaredMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法类对象,包括私有的和保护的和默认修饰的
访问:
public Object invoke(Object obj , Object... args):调用当前类的成员方法,参数1为当前类的对象,参数2为可变参数,作用为给形式参数赋值
反射获取类中成员变量并去给成员变量赋值
获得成员变量:
public Field[] getFields() throws SecurityException:获取当前类的公共字段类对象
public Field[] getDeclaredFields() throws SecurityException:获取当前类的所有字段类对象
public Field getField(String name) throws NoSuchFieldException,SecurityException:获取当前类指定的公共字段类对象
赋值:
public void set(Object obj, Object value) throws IllegalArgumentException,IllegalAccessException:给指定的类对象实例赋值,第一个参数为该类的具体对象,第二个参数为赋值的值
获取类字节码文件方式
通过使用Object类中的getClass()方法
对象.getClass()
任意java类型的class属性可以获取
类名.class
反射的静态功能forName
public static Class forName(String pathname)
pathname为当前类的全限定名称(包名.类名)
2.数据库基础操作语句
进入数据库:mysql -uroot -p
创建库:create database 库名; create database if not exists 库名;
展示库:show databases;
删除库:drop database 库名; drop database if exists 库名;
查询新建数据库的字符集:show create database 库名;
查询mysql中所有的字符集:show variables like '%character%';
3.DDL语句
使用库:use 库名;
查询库中有哪些表:show tables;
创建表语法:
create table 表名(字段名称1 字段类型,字段名称2 字段类型,....,字段名称n 字段类型);
查询表结构:desc 表名;
修改表
添加字段名及类型:alter table 表名 add 字段名称 字段类型;
修改字段名及类型:alter table 表名 change 以前字段名称 新的字段名称 数据类型;
修改字段名的类型:alter table 表名 modify 字段名称 新的字段类型;
删除字段名及类型:alter table 表名 drop 字段名称;
修改表名:alter table 表名 rename to 新表名;
复制表:create table 复制的表名 like 被复制的表名;
删除表:drop table 表名;/ drop table if exists 表名;
4.mysql注释格式
单行:#或者--
多行:/**/
5.mysql常见字段类型
varchar:字符串类型
char:字符类型
int:整数类型
date:日期
datetime:日期和时间
timestap:时间戳
6.DML语句
插入数据:
单排插入:insert into 表名 values(值1,值2,值3,、、、);
多排插入:insert into 表名 values
(值1,值2,值3,、、、),
(值1,值2,值3,、、、),
、、、 (值1,值2,值3,、、、);
注意事项:插入数据的时候,插入数据的值类型需要和当前字段类型一致
单排插入部分字段:insert into 表名(字段名称1,字段名称2、、、) values(值1,值2,值3,、、、);
多排插入部分字段:insert into 表名(字段名称1,字段名称2、、、) values
(值1,值2,值3,、、、),
(值1,值2,值3,、、、),
、、、 (值1,值2,值3,、、、);
修改数据
修改某一字段一条:update 表名 set 指定名称 = 值 where 条件;
修改某一字段多条:update 表名 set 指定名称1 = 值1,指定名称2 = 值2、、、 where 条件;
批量修改某一字段:update 表名 set 指定名称 = 值;
删除数据:
单个条件删除:delete from 表名 where 条件;
多个条件删除:delete from 表名 where 条件1 and 条件2 ;
删除全表数据:delete from 表名; /TRUNCATE table 表名;
两种删除方式的区别:
delete from 表名;:只是删除了表中数据,表对数据的约束仍然在
TRUNCATE table 表名;:将表数据和表对数据的约束一起删除
7. sql(结构化查询语句)
查询格式:SELECT 需要查询的信息 FROM 表 WHERE 查询的条件;
可以给表起一个别名,即在表后面加上“AS 表别名”即可
可以给查询信息起个名字单引号''中间加上名字即可
mysql自带判断是否为空的函数ifnull(字段名称,预期值);:如果字段为空则将预期值赋值过去
where条件查询:后面可以跟
基本比较运算符:<,<=,>,>=
赋值运算符:=
不等于:<>
并列关系:and
或关系:or
判断某值为空:is null
判断某值不为空:is not null
在两值范围内(包含两端):between 值1 and 值2
多个或者关系in集合语句:in(值1,值2,值3);
模糊查询:关键字like
SELECT 需要查询的字段 FROM 表名 WHERE 字段名称 LIKE '%xx%';
集合函数查询:
count(字段):通过指定字段查询总记录数
avg(字段):对某个字段的值求平均值
max(字段):求某个字段的最大值
min(字段):求某个字段的最小值
sum(字段):对某个字段的值进行求和
排序查询:
单条件排序:order by 字段名称 排序方式;
多条件排序:order by 字段名称1 排序方式1,字段名称1 排序方式1,、、、;
排序方式
asc:升序排序,字段名称后面如果没写排序规则,默认升序排序asc
desc:降序排序
分组查询:GROUP BY
格式:SELECT 分组字段,聚合函数 FROM 表名 GROUP BY 分组字段;
注意事项:GROUP BY后面不能跟聚合函数,WHERE条件必须在GROUP BY之前因为先满足条件再分组
筛选查询:having:having后面可以跟聚合函数,GROUP BY分组之后,后面就可以使用having
分页查询:limit