實驗室架構采用的是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);
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
資料備份