日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项目笔记:2017年(SSM架构)

發布時間:2024/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目笔记: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架构)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。