利剑无意之JAVA面试题(一)
- mybatis中ResultMap和ResultType的差別?
?
兩者都是表示查詢結果集與java對象之間的一種關系,處理查詢結果集映射到java對象。
resultMap:表示將查詢結果集中的列一一映射到bean對象的各個屬性。
ResultType:表示的是bean中的對象類,此時可以省略掉resultMap標簽的映射,但是必須保證查詢結果集中的屬性 和 bean對象類中的屬性是一一對應的,此時大小寫不敏感,但是有限制。
- mybatis中的#和$的區別?
?
#{}:占位符號,好處防止sql注入
${}:sql拼接符號
#方式能夠很大程度防止sql注入,$方式無法防止sql注入。
?
$方式一般用于傳入數據庫對象,例如傳入表名
?
一般能用#的就別用$
- JDBC編程有哪些不足之處,MyBatis是如何解決這些問題的?
?
1.數據庫鏈接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫鏈接池可解決此問題。
解決:在SqlMapConfig.xml中配置數據鏈接池,使用連接池管理數據庫鏈接。
2.Sql語句寫在代碼中造成代碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java代碼。
解決:將Sql語句配置在XXXXmapper.xml文件中與java代碼分離。
3.向sql語句傳參數麻煩,因為sql語句的where條件不一定,可能多也可能少,占位符需要和參數一一對應。
解決:Mybatis自動將java對象映射至sql語句。
4.對結果集解析麻煩,sql變化導致解析代碼變化,且解析前需要遍歷,如果能將數據庫記錄封裝成pojo對象解析比較方便。
解決:Mybatis自動將sql執行結果映射至java對象。
- 常用的動態sq|語句標簽有哪些?
?
if、choose、when、otherwise、where、trim、set、foreach
- 分頁插件pagehelper如何使用?
?
1.導入pagehelper依賴
2.在mybatis的配置文件中配置plugin插件
3.在代碼中通過PageHelper.startPage(int num,int size)設置查詢頁碼和每頁記錄數
4.把查詢結果封裝到PageInfo工具類中,獲得相關分頁信息
?
- 當實體類的屬性名和表種字段名不一致怎么辦?有幾種解決辦法?
?
1.在sql語句中給字段添加別名,使用別名與屬性名相同
2.通過resultMap實現字段與屬性的映射
- 什么是maven本地倉庫? Maven到底有哪些倉庫?它們什么關系?
?
本地倉庫路徑配置
所以本地倉庫就是相當于加了一層jar包緩存,先到這里來查。如果這里查不到,那么就去私服上找,如果私服也找不到,那么去中央倉庫去找,找到jar后,會把jar的信息同步到私服和本地倉庫中。
私服,就是公司內部局域網的一臺服務器而已。
中央倉庫:該倉庫存儲了互聯網上的jar,由Maven團隊來維護.
- Maven的生命周期命令有哪些?
?
clean、compile、test、package、install、deploy
- maven項目中servlet和jsp的依賴范圍是哪個?它有什么作用?
provided:編譯期有效,運行期不需要提供,不會打入包中。
- Maven坐標是那三個要素?
?
groupID,artifactId,version
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的利剑无意之JAVA面试题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用 Flink 取代 Spark Str
- 下一篇: 利剑无意之JAVA面试题(二)