ITOO3.1開發問題彙總(一)
阿新 • • 發佈:2019-01-11
第一次進入ITOO,第一次見識到整個架構,光搭建環境就出現了很多錯誤,5個人中3個為新手的我們,著實費了不少功夫,之後進入開發亦是如此。但總得有這個過程,我們在錯誤中長大,才更加茁壯。但過了一個階段必須對以前進行總結,顆粒歸倉。否則過一段時間就會忘掉,流失了。這次主要看一下跟資料庫相關的知識。
第1個問題:作為基礎系統的一員,給其他系統提供必要的資料是必不可少的。但是總不能一條一條的插入吧?即使用sql語句也是如此。經過一番努力,成功找到一個方法: ① 先建立一個儲存過程(使用Navicat連結的MySql,建立了1000條)- DROP PROCEDURE
IF EXISTS insert_courseInfo
DELIMITER ;
CREATE PROCEDURE insert_courseInfo ()
BEGIN
DECLARE
i INT DEFAULT 0;
WHILE i <1000 DO
INSERT INTO `itoo_platform`.`tb_courseinfo`(
`id`,
`comment`,
`operator`,
`versionEndTime`,
`versionStartTime`,
`isDelete`,
`remark`,
`classHour`,
`classPoint`,
`courseCode`,
`courseName`,
`courseTypeId`,
`institutionId`
)
VALUES
(
CONCAT('23', i),
'吳利昌新增',
'吳利昌',
'2015-07-06 15:49:28',
'2015-07-06 15:49:37',
'0',
'吳利昌新增',
'18',
'4',
CONCAT('05', i),
'材料化學',
'1',
'2'
);
SET i = i +1;
END
WHILE ;
END
CALL insert_courseInfo();
CALL insert_courseInfo();
Affected rows: 1
Time: 42.112s④ 執行結果 其實主要是對CONCAT函式的使用,它可以將字串與數字進行結合,非常方便。
- 我現在的程式碼
-
pageEntity.setSelectContent("p.institutionId,p.id,p.institution.institutionName,p.remark,p.maxPeople,p.professionalCode,p.professionalName");
pageEntity.setSelectWhere("p.professionalName like '%"+ conditions
+"%' or p.institution.institutionName like '%"+ conditions
+"%' or p.professionalCode like '%"+ conditions +"%' or p.remark like '%"+conditions+"%'");
-
- 生成的sql語句
-
SELECT p.institutionId,p.id,p.institution.institutionName,p.remark,p.maxPeople,p.professionalCode,p.professionalName FromProfessional p where p.isDelete =0and p.professionalName like '%化學%'or p.institution.institutionName like '%化學%'or p.professionalCode like '%化學%'or p.remark like '%化學%'
-
- 問題:
- 注意生成的sql語句中where後面的條件,and與後面的or應該為一個查詢條件,而這條sql語句將會分為兩個條件:or和and,這樣查出來的資料肯定會查出來isDelete為1的情況。
- 解決方法
- 應該給and後面的條件加上括號:(),在程式碼中的setSelectWhere中字串用括號()括起來
-
pageEntity.setSelectContent("p.institutionId,p.id,p.institution.institutionName,p.remark,p.maxPeople,p.professionalCode,p.professionalName");
pageEntity.setSelectWhere("(p.professionalName like '%"+ conditions
+"%' or p.institution.institutionName like '%"+ conditions
+"%' or p.professionalCode like '%"+ conditions +"%' or p.remark like '%"+conditions+"%')");
- 另外一個問題
- 由於底層已經寫上了isDelete=0的查詢條件,而且跟著and關鍵字,如果 setSelectWhere中的內容不寫的話,sql語句會報錯的。。。寫上的話,生成的sql語句會有兩個isDelete=0...底層方法封裝還是有些不完美~不過已經相當不錯了,更多的時候我們直接即可,非常方便。
- 我現在的程式碼