文章目錄
- 1.個人回顧
- 2.關于mybatis注解的說明
- 3.字段和屬性不匹配的解決方案
- 3.1第一個方案
- 3.2第二個方案
- 3.3第三個方案
- 4.xml路徑配置
- 5.xml里面的字段映射
1.個人回顧
剛剛翻看了一下自己的這個之前寫的博客,上一次和這個javaee相關的博客還是去年寫的,也就是2024年的12.23號,這個還是一個非常久遠的日子,我上個學期還是學習的java,是從10月底開始學習的,之后學習的這個日程就拉的比較滿,所以這個進度很快,但是后來做了這個網頁端的五子棋對戰的這個項目(廢棄中),因為這個做到設計棋盤的時候這個技術看不懂,而且這個效果沒做出來,所以后來也沒做了(其實這個項目里面很多功能還沒實現,包括這個網絡版本的對戰);
然后就繼續去學習了這個Mybatis的日志相關的這個內容,包括這個注解是如何去使用的等等吧,但是后來好像有沒學了,當時是想著跨專業考驗的,去學習了這個自動控制原理的內容,java就沒咋學習了;
即使是后面的這個寒假,我也是在作這個魚皮的項目:一個是用戶管理中心(我覺得這個項目適合入手,讓我了解了一下這個整體的邏輯,但是我覺得魚皮的這個課程不是很好,我無法接受的就是最后的一點,他的這個系統做出來之后,非要去添加這個星球的編號這個屬性相當于就是去修改這個實體類,這個后果就是所有的東西都需要變,這個就比較惡心,因為我覺得這個需求分析結束之后,這個開發的過程中是不應該去修改我們的這個需求的,所以當他最后去添加這個星球編號的屬性的時候,我就真的無法接受,而且我覺得當時最開始在前端的那個umi和vue的時候,也耽誤了很長的時間,現在回想起來,那些都是沒有必要的,我覺得);
寒假的時候,包括開學之后,都是在學習這個算法(藍橋杯準備的——,大部分時間在學習是這個數學建模的相關內容,自己創建了一個知識星球,一直在搞這個內容,運營自己的星球,反正就是嘗試了很多的這個內容,對于這個鳶尾花書也比較感興趣,也寫了不少的關于這個部分內容的文章;
前段時間準備實習簡歷,花了三天的時間水了一個SSM項目–論壇系統,雖然好多東西都不會,但是也用自己的云服務器把那個項目上限了,補了好多關于項目里面的技術點,但是畢竟是突擊嗎嘛,掌握的也不咋地,但是面試的時候老師也沒有問相關的內容,我也覺得這個就是一個破網站,都可以用微信交流,誰會去用這個論壇,一點實際意義也沒有,可能,只有教學的意義吧~~
但是我昨天和數學建模的線下聊天,我確實真切的體會到,興趣畢竟是興趣,我在這個數學建模上面投入再大的時間,他終究無法幫助我找到好工作,工作,吃飯的這個事情還是要看這個java的技術水平,我之前的這個路線上面確實出現了問題;
但是我不后悔,我認為沒有什么對與不對,自己喜歡就好,后面還是老老實實的學習java吧,畢竟這個學期是自己學習這個java的最后的一段時間了;
2.關于mybatis注解的說明
注解的話,是我們的springboot項目里面的很重要的一個部分,因為我們在進行這個項目的開發的這個過程里面,經常會使用到很多的這個注解,但是這個畢竟是為了解決我們的Mybatis框架里面的這個查詢的問題;
其實解決的這個查詢的問題,或者說想要實現這個功能,我們既可以使用這個注解的方式,也是可以使用這個文章后半部分的這個xml的方式;
下面我們使用這個@select這個注解作為我們的案例,進行注解的使用的相關的這個說明,我們的下面的這個方法想要實現的這個功能就是查詢我們的這個數據庫里面的這個表的用戶的相關信息,queryUserList就是我們定義的這個方法,注解后面的這個括號里面的內容實際上就是我們的navicate里面的這個想啊哈尋得語句,我們可以在這個navicate這樣的工具里面進行測試之后,沒問題的話放到這個注解的內容里面去即可;
這個事進行的數據庫表里面的字段內容的查詢,其他的幾個方法也是類似的;
3.字段和屬性不匹配的解決方案
這個是什么情況下會遇到呢?我們為什么會遇到這樣的這個問題:
1)java里面主要的這個命名的規范就是駝峰命名;
2)數據庫里面的這個字段經常使用我們的這下劃線分割(例如這個字段的刪除時間,deletetime在java里面就是deleteTime,在我們的數據庫里面就是deleteTime,因此代碼里面就會出現無法識別;
類似于這個username,password之類的,這個就是很容易對應上的,這樣的這個字段一般情況下也不會遇到很大的對應問題,因此這個問題主要是出現在組合的屬性字段上面;
3.1第一個方案
第一個解決方式:
查詢SQL語句的重新命名,就是我們進行這個select delete_time as deleteTime from userinfo,這樣進行重命名,通過這個as把我們的數據庫里面的字段和我們的java里面的這個實體類的這個不同之處解決掉這樣就可以解決這個不匹配的問題;
其實如果無法識別的結果就是測試的時候打印出來的就是null這樣的數據罷了,但是其實在我們的數據庫里面是存在這個具體的數據的;
3.2第二個方案
第二個解決方式:定義results這個注解,里面是我們需要進行說明備注的這個注解,column表示的就是這個字段在數據庫里面的名字,后面的property就是在我們的實體類里面的名字這樣對應上就可以了;
3.3第三個方案
第三個解決的方式:配置文件里面添加上下面的這個自動駝峰轉換的配置,就可以自動解決這個兩者之間不匹配的問題;
4.xml路徑配置
就是在我們的yml配置文件里面去寫這個xml路徑的地址,也就是這個location
classpath就是對于哦們的這個xml文件的路徑進行指定,mapper就是我們的文件夾的名字,*就是通配符,表示使用mapper.xml文件名結尾的文件,我們的這個UserInfoXmlMapper就是符合這個要求的;
如果你的這個mapper里面涉及復雜結構,可以使用**也就是兩個星號作為通配符,這個表示的就是兩層或者是多層目錄的這個情況;
5.xml里面的字段映射
定義相關的方法:在我們的這個mapper里面直接定義即可,下面使用刪除和查詢作為示例,其實寫完方法之后,沒有在xml里面去說明,就會報紅線,我們點擊這個statement就可以默認添加方法;
下面是我們的這個resource下面的這個xml具體的寫法和一些相關的這個注意事項;
namespace就是指定這哦xml文件的位置,這個是用的類似于Html雙標簽的方法,delete和select不同的地方就是多了這個resulttype就是實體類的問題,因為我們返回的是對象,需要說明一下是什么對象,所以自動生成的這個代碼里面出現了這個resultType進行指定;
下面的這個就是xml里面的這個字段映射的另外一個實現的方法途徑:這個事和我們的注解不同的地方,他這個里面的resultMap就是我們自己定義的,然后我們再這個最上面的需要進行說明,也就是下面的這個代碼里面的5-10行,這個第五行里面的id就是我們的這個低21行里面的resultMap的名字,這個type就是我們的實體類里面的位置;
6-9行里面的內容是我們的這個逐漸和屬性說明,其中這個主鍵不是一定要有的,但是其他的幾個都是一定需要的;
Map的名字,這個type就是我們的實體類里面的位置;
6-9行里面的內容是我們的這個逐漸和屬性說明,其中這個主鍵不是一定要有的,但是其他的幾個都是一定需要的;