项目笔记:2017年(SSM架构)
一、第一部分
前后端分離后的測試工具的使用(Postman);
svn先更新再提交,沖突就把自己占位的地方讓出,再提交;
maven項目也可以用tomcat直接啟動;
在mybatis.xml文件中,if判斷條件中,可以設置為a=null or a!=null,這樣表示可以為空或者不為空;
在mybatis文件中,返回可以是一個map集合,自定義resultMap,將類屬性和表字段關聯,還得寫出jdbcType=”值”(為數據庫屬性值);
可以熟悉下mybatis.xml中的trim標簽;用注解data開發,不用寫set/get方法,在eclipse根目錄下導入lombok.jar包,在eclipser.ini文件中添加-javaagent:lombok.jarDorg.eclipse.swt.browser.IEVersion=10001;
項目可以close關閉。Svn導入項目,是maven可以轉換成maven項目;
邏輯判斷,一定要思路清晰,一層一層的往里推進;
在查詢數據庫,用mapper文件時,編寫一個動態sql語句;<sql>標簽下再用<trim>標簽,perfixOverrides=”and” suffixOverrides=”,” 將and和,轉換;下用<if >標簽,里面判斷!=null and !=’’;如果滿足,就走該條件,不滿足,就跳過該條件;
Update思路:只查詢表中部分唯一字段時,傳入的屬性值就只傳入這些唯一字段屬性值;在select出來對象后,set添加其他屬性值(非唯一字段),再update方法,update的條件可以設置為查詢出來的任意一個屬性值,這樣可以update數據庫中的表的值;
查詢:想查詢什么字段(唯一),就傳入什么參數(唯一字段的);
PropertiesCopyUtil.parse(userRoleInfo_01,UserRoleSpecificInfoCriteria.class):對象字段復制工具類;
@RequestMapping()中的屬性produces=”application/json;charset= UTF-8”:表示從前端接收的字符集為UTF-8;
傳遞參數到后端:Json對象,對象中有list集合,集合的對象中還有list集合,三層或者更多層嵌套;
定義實體response類:類{list集合<類>{list集合<類>,按照Json數據封裝成響應實體類,一層一層嵌套;
mybatis.mapper.xml文件中:傳入對象,<if>標簽里的條件,當符合條件進入<if>標簽內的sql語句,不符合條件跳到下一個<if>標簽;返回Map集合,自定義一個resultMap,將實體類與數據庫表字段對應;
基本數據類型用==和!=比較值;引用數據類型用equals比較對象的內容;
在已經完成的項目中添加比較大的需求,做一個項目的分支,在分支里面添加功能代碼;
mapper文件出錯時,檢查and,’,’等錯誤,是sql語句的問題;
null指針異常,主要檢查方法的return值。還有前端是否傳送過來值,并且在后臺代碼中接收了該值,又賦值給其他屬性;
控制臺出現sql語句查詢條件缺失(傳入4條件,控制臺只顯示2、3個條件),如果mapper文件中有<if text>語句,那就是沒有進去,有可能是單引號或者null的問題;
用maven工具將項目打包成war包:clear backage;刷新target目錄;
部署項目先備份,將舊項目mv到備份文件夾,改名字;再將新項目移動到webapps部署;
測試查看日志:在后臺文件夾下的logs文件里,有每天的日志更新,使用tail -10f(10行) –日期.logs;
退出tail –f 使用ctrl+c命令;
清屏命令ctrl+ l ?// ?clear命令;
初始化問題(nullpointException):有多個前端方法共用1個后臺方法時候,后臺方法分為很多個if else判斷,那么就要把對象和數值的初始化,放到if或者else等的方法中;
? 二、第二部分
將前端包放在tomcat下的webapps下,則可以用本電腦測試,localhost:端口號/路徑;如果是其他人調用本電腦,則用當前電腦ip:端口號/路徑;(配置tomcat的server localtions的tomcat installation,deploy path為tomcat的前端包位置(webapps))
規范的代碼,一個方法不超過100行。超過100行,則抽取方法;
Debug卡住,可能是eclipse自動加斷點。此時在window-show-break-去掉左右斷點即可;
接受參數,用@requestBody Class clazz,將前端傳的字段賦值給該@后的對象clazz;
Mybatis,可以在IDAO的方法上加@Param(“id”) Long id,前面id為Mapper文件的parameterType傳給sql語句的屬性,后面的id為該方法的參數;
@Autowired注入,直接針對該類或者接口。@Resoure針對的是某類上定義的名字;大項目推薦@resource
代碼里的異步請求(調用底層api):將所有請求集合分割成一定size的集合的集合(方法抽取);再遍歷外層集合,將里面集合作為參數,請求api(方法抽取);將得到的數據(集合),再拼接。(都有個for循環,且用到Futrue請求返回結果)
異常的處理: ? ?a.throw出去new XXException("狀態信息"),定義一個異常類XXException,在類中定義構造器,參數為狀態碼和狀態信息。則捕獲到的狀態碼,可以獲取對應的狀態信息? ? ?b.建一個AjaxResult返回結果實體類,里面包含了實體類Object ob,狀態信息,狀態碼。定義構造器,參數為該3個參數。在方法中獲取到結果集,可以new AjaxResult(),將獲取的結果集當做參數傳入構造器中。
? 三、第三部分
在服務器下的bin/xxx.sh start啟動服務器;
SqlSessionFactory 錯誤,清理clean;
返回值給前端,按Json[]返回,則數組中每個對象不能省略,不管該對象是否有值;
mybatis對應mapper.xml文件,建2個實體類,1個實體類和mapper.xml文件的字段完全對應,作為傳入參數或者返回參數。另1個實體類基本和mapper.xml文件字段對應,但是可以擴展;
定義數字字典在dao接口中,delete和update等沒有返回值的方法,弄一個int返回值;
mapper.xml文件中,返回值設一個resultMap,將表字段和類屬性對應;當select方法,如果查詢是唯一,就返回一個實體類;如果查詢不唯一,就返回list集合;
service層,做一個data資料文件夾,里面保存了映射---接收參數和傳遞參數;
@Service注解(“類名”),在注入的類中,用@Resource(name=”類名”),這樣比較直觀的知道注入與被注入的關系;
private static Logger logger = LoggerFactory.getLogger(本類.class):作用是打印日志(有的類不需要);
可以用switch(true) case A break;? case B break;滿足就跳出,不一定做if判斷,有時候比if判斷更好用(例如步驟);
propertiesCopyUtil? 兩個類之間復制,當兩個類的屬性名相同時就復制值;在實體類設置了2個entity時會用到。(一個類和mapper.xml文件對應,一個類用來擴展),當dao借口傳參為criteria類,返回值為do類。如果返回值過多(兩個表之間關聯)(或者有集合之類),可以在service層創建一個vo類,并且繼承criteria類;
點住源路徑:src/main/java,右鍵,build path/remove from build path,在src下有resources,右鍵,build path/use as Source Folder(run/runConfigruations…? ??environment /new 新建項目路徑,配置文件路徑value);
Java方法:去空格:trim();
ps –ef | grep 項目名:查看項目進程;
sql語句:查詢最大值:exists select 1 from (
? ?select require_id,max(create_time)as create_time
??????? ??? from function_requirement group by require_id
??????? ? ) s1
??????? where s1.require_id = function_requirement.require_id
??????? and s1.create_time = function_requirement.create_time
查詢創建時間為最新的相同requireId的數據;.sql語句:in ()和not in () ,表示該字段在()內或者沒有在()內。()內是一個該字段的數組或者集合;可以用foreach來遍歷;.sql語句:union關鍵字,查詢2個表,將查詢的相同數量的字段的值,再賦值給第一個select語句查詢的字段;例如select A.a from A union select B.b from?? B,將b的值賦給名字為a字段;?
一個對象a,在一個方法中賦值,無論是在if()還是在什么條件內;
?查詢數據庫得到數據/從前端傳過來的必要的數據,都要做非空校驗,以免報nullPointExecption;
轉載于:https://www.cnblogs.com/AlmostWasteTime/p/6945266.html
總結
以上是生活随笔為你收集整理的项目笔记:2017年(SSM架构)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]Tomcat优化之内存、并发、缓存
- 下一篇: ERP问题解决