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