实验室框架学习1

实验室框架采用的是SSM,权限管理使用的是RBAC模型,依赖使用Maven进行管理。

SSM(Spring+SpringMVC+MyBatis)

Java

基本语法

注释{ 单行, 多行, 文档注释}
数据类型{
整型`

byte(-2^7^ ~ 2^7^) 
short(-2^15^ ~ 2^15^)     
int(-2^31^ ~ 2^31^)    
long(-2^63^ ~ 2^63^)

浮点
小数默认double类型 所以 float f=0.1f; 多加一个f表示float类型
float maxF = Float.MAX_VALUE;
float的最大值
字符,char 定义单个字符
转义字符 ‘+’
Unicode 编码输出中文名
布尔类型
基本类型转换
}
运算

b=a++;  先赋值再自增
b=++a;  先自增再赋值

(条件1)&(条件2) 短路与 条件1不成立就不接着看条件2了
^ 异或 俩操作数不相同时返回true
三目运算符
(表达式)?a1:b2;
选择与循环语句
if…else…else if… else

switch(){
case 1:{ break; }
case 2:{ break; }
default: ;
}

数组

静态初始化

int []arr;   
int arr[] = new int[]{1,2,3};

foreach方式

for(int i:arr){
	System.out.println(j);
}

动态初始

int arry[] = new int[3];

面向对象
封装,继承,多态
String …hobbies 不固定参数
传到方法中的对象是可以方法中更改数值,在外部也变化的。
方法:
重载指的参数数量,类型不一样;
返回类型不同不算重载。
static
普通方法要 对象.方法
静态方法 类名.方法

访问控制权限
访问权限
package 要导入其他包

构造块
通用代码块在实例化就会运行
静态代码块只要加载类就会执行

String类

直接赋值若值相同,指向同一地址;
new 每次都分配一个新的地址
==   比较的是引用
.equals()   比较的是内容

继承
子类可用用super()调用父类的构造方法

public Cat(int age, String name){
	super(name, age);
}

final关键字
使用final声明的类不能被继承;
使用final声明的方法不能被子类覆盖;
使用final声明的变量不能被修改,即为常量;

抽象类

  • 包含一个抽象方法的类是抽象类;
  • 抽象类和抽象方法都要用abstract关键字修饰;
  • 抽象方法只需要声明而不需要实现;
  • 抽象类必须被子类(假如不是抽象类)必须重写抽象中的全部抽象方法;
  • 抽象类不能被实例化

接口
方法不用实现

多态性
1,方法的重载和重写;
2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现;

Object类
instanceof
匿名内部类
包装类:
基本类型和类类型转化然后操作
《Head First设计模式》

异常处理 27-28讲

try{
	...
}catch(Exception e){
	....
}

编译异常要捕获(try…catch)
运行异常可以不捕获
自定义异常

JAVA常用类
Date类
Calandar.MONTH从0开始 要+1
SimpleDateFormat 用于日期和字符串转换

String VS StringBuffer
string通过 str+=“xxx”; 增加内容
在堆区中指向不同区域
对String复杂操作用StringBuffer 如append
在堆区中指向相同区域
Math 类

Arrays类

JAVA泛型

public class Prototyle<T extends type>{
	private T t;
	public Prototyle(T t){
		super( );
		this.t = t;
	}
	set()...
	get()...
}
main(){
	Prototyle<ex1> p1 = new Prototype<ex1>( new ex1());
	Prototyle<ex2> p2 = new Prototype<ex2>( new ex2());
}

通配符泛型 32
反射

Class<?> c = Class.format("com.java1234.chap07.sec01.Student")
Student s = (Student) c.newInstance()

通过反射获得构造方法

Constructor<?>[] cons = c.getConstructors();
s = (Student) cons[0].newInstance("abc", 11 );

JAVA集合
ArrayList.size() .add(str) .remove(int) .set(int, str)
LinkedList.indexof(str) .peekFirst()
双向链表

集合的遍历
Iterator

LinkedList<Student> list = new LinkList<Student>();
Iterator<Student> it = list.iterator( );
while(it.hasnext()){
	...
}

foreach

for(Student s:list) {
	System.out.println(s);
}

set集合
HashSet是无序且不重复的
Map<K,V>
hashmap.get(key) 获得value
value获取key只能手写遍历

Java多线程 37-38讲
Class extends Thread

synchronized 线程锁

I/O流

File file=new File("dir");
InputStream inputStream= new FileInputStream(file);

OutputStream outputStream = new FileOutputStream(file);
OutputStream outputStream = new FileOutputStream(file, true);

Buffer

BufferedInputStream bufferedinputStream =new BufferedInputStream(new FileInputStream("C://Users//83926//Desktop//1).txt"));
BufferedOutputStream bufferedoutputStream =new BufferedOutputStream( new FileOutputStream("C://Users//83926//Desktop//11.txt"));

Reader Writer

Reader reader=new FileReader(file);
char c[]=new char[1024];
int len=reader.read(c);

II/O流举一反三

debug
F6 单步 F8 完成 F5进入方法
ctrl+shift+i 查看表示式值
动态修改

快捷键:

main alt+/ 可以获得提示
syso alt+/ 可以获得输出语句
ctrl+shift+o 自动导入包
ctrl+shift+/ 多行注释
ctrl+d 删除当前行
alt+shift+s 弹出菜单选择自动生成get和set方法
alt+/ 打开所选函数的重载
选区按住alt 按方向键可以移动位置
ctrl+o 搜索当前class的属性,方法

Mysql

环境搭建

  • 安装mysql
  • 安装SQLyog可视化软件
  • 安装apach-tomcat
  • eclipse配置server以及JARs

查询语句
IN / NOT IN
BETWEEN A AND B
LIKE %任意字符 _单个字符
IS NULL
ORDER BY ASC/DESC 升序/降序
GROUP BY 分组查询{
GROUP_CONCAT()函数一起使用
和聚合函数一起使用 例如COUNT()
HAVING一起使用
WITH ROLLUP一起使用 在最后一行加总和
}
LIMIT 0,5 ; 从0开始数五条

聚合函数
COUNT() AS total 以total命名表头
SUM()
AVG()
MAX()
MIN()
??如何找到各年级年龄最大的学生 【未解决】

连接查询
笛卡尔乘积
左连接有左表全部信息 a LEFT JOIN b ON c
右连接有右表全部信息 a RIGHTJOIN b ON c

子查询
合并查询
UNION 合并查询结果(不可重复)
UNION ALL 合并查询结果(可重复)
表取别名 t_book t
字段取别名 AS

插入删除数据
索引 11-12讲
提高查询速度;

视图
1.简化
2安全性
3逻辑独立性
CREATE VIEW x AS SELECT * FROM t_book;
SHOW TABLE STATUS LIKE ‘v3’;

替换view
CREATE OR REPLACE VIEW x AS SELECT * FROM t_book;
ALTER VIEW x AS SELECT * FROM t_book;

更新视图
INSERT INTO v1 VALUES (null.‘xx’,123,‘feng’,1);
UPDATE v1 SET bookName=‘java’ WHERE id=5;
DELETE FROM v1 WHERE id=5;
DROP VIEW IF EXISTS v4;

触发器

 CREATE TRIGGER trig_bnum AFTER INSERT 
	ON t_book FOR EACH ROW 
		UPDATE t_bookType SET bookNum=bookNum+1 WHERE new.bookTypeid=t_booktype.id;

触发器触发多个效果

DELIMITER |
CREATE TRIGGER trig_book2 AFTER DELETE
	ON t_book FOR EACH ROW 
	BEGIN
		UPDATE t_booktype SET bookNum=bookNum-1 WHERE old.booktypeid=id;
		INSERT INTO t_log VALUES(NULL,NOW(),'删除了一条book数据');
	END
|
DELIMITER;

SHOW TRIGGERS
DROP TRIGGERS trig_book;

存储过程,存储函数

游标 【未解决】 18讲

流程控制

DELIMITER &&
CREATE PROCEDURE pro_user(IN bookId INT)
	BEGIN
		SELECT COUNT(*) INTO @num FROM t_user1 WHERE id=bookId;
		IF @num>0 THEN UPDATE t_user1 SET userName='ssss'WHERE id=bookId;
		ELSE
			INSERT INTO t_user1 VALUES(NULL,'111','222');
		END IF;
	END
&&
DELIMITER;	

CALL pro_user(4);

CASE 语句

CASE @num
	WHEN value THEN ...
	WHEN value THEN ...
	ELSE ...
END CASE

LOOP LEAVE

BEGIN
	aaa:LOOP
		SET totalNum=totalNum-1;
		IF totalNum=0 THEN LEAVE aaa;
		ELSE INSERT INTO t_user VALUES(totalNum,'xxxx','aaaa');
		END IF
	END LOOP aaa;
END

ITERATE

IF value THEN ITERATE aaa;  跳过本次循环

REPEAT

BEGIN
	REPEAT
		SET totalNum=totalNum-1;
    	INSERT INTO t_user VALUES(totalNum,'xxxx','aaaa');
    	UNTILL	totalNum=1;
	END REPEAT
END

WHILE

BEGIN
	WHILE totalNum>0 DO
    	INSERT INTO t_user VALUES(totalNum,'xxxx','aaaa');
    	SET totalNum=totalNum-1;
	END WHILE;
END

19讲对存储过程和函数的操作

提示

建表id自增
当删除一列时对应id列为空,可以通过insert固定位填充且不会影响自增。
例如自增下一次为id=11. 此时删除id=7,插入values(7,xxx)
下次插入values(null,xxx) id为11

数据备份

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值