原创 Mybatis入門,Mybatis運行原理剖析,Mybatis源碼研究,StatementHandler,TypeHandler,SimpleExecutor,ResultHandler

一般我們使用Mybatis按照如下流程處理: public class Bootstrap { private static SqlSessionFactory sqlSessionFactory; static

原创 5. Mybatis入門,ResultMap級聯,association,collection,discriminator,resultMap繼承,lazyLoadingEnabled

Mybatis級聯分爲三種:association,collection,discriminator association:代表一對一關係 collection:代表一對多關係 discriminator:鑑別器,根據實際選擇採

原创 4. Mybatis入門,參數中#和$的區別

在xml的語句中,${id}相當於是直接替換,例如: ORDER BY ${columnName},則會直接按值替換掉,不會生成PreparedStatement,是直接在SQL層面替換。 但是如果使用#{id}會促使MyBati

原创 Mysql常用語句,查看數據庫,字段重命名,修改數據庫、表、字段字符集

一般後臺shel登錄mysql: mysql -uroot -p mysql中查看所有數據庫: show databases; 切換數據庫: use testDB; 列出當前數據庫下所有表: show tables; 查看

原创 3. Mybatis入門,動態sql,if條件,choose,trim,foreach循環,bind

if:條件判斷語句,單條件 choose(when,otherwise) 相當於case when trim(set,where):輔助語句,主要用來處理一些sql拼裝 foreach:循環語句 if條件語句 <select id

原创 2. Mybatis入門,Mybatis元素,select,insert,update,delete相關屬性

Mybatis相關配置元數說明 settings元素 屬性名稱 作用 備註 cacheEnabled 所有映射器中配置的緩存全局開關 默認值爲true lazyLoadingEnabled 延遲加載全局開關

原创 1. Mybatis入門,基於xml配置和完全基於代碼的使用

在程序處理過程中我們一般都需要和數據庫進行交互,從數據庫獲取結果之後需要將相應的結果轉換爲程序對應實體對象,基於JDBC底層的需要我們進行手動的設置,比較繁瑣,爲此誕生了例如:hibernate。Mybatis等orm框架(Obj

原创 springboot應用啓動流程分析,嵌入式tomcat

之前我們分析了下springboot自動裝載的原理,現在我們看看springboot應用啓動的流程: 一般調用如下: // 應用代碼 SpringApplication.run(MiddlewareApplication.cl

原创 springmvc使用範例,底層實現原理,源代碼研究,springmvc父子容器

在J2EE的開發中,一般都是基於java servlet規範,很多web容器也實現了相關的規範,比如tomcat,使用原始J2EE servlet開發web應用的時候一般都是在web.xml中配置很多的servlet和對應serv

原创 springboot自動裝配原理,底層源碼分析,條件註解實現機制

在springboot中我們構建應用不用在像spring中那麼繁瑣,必須聲明bean,然後才能使用,在springboot只要引入了相關的jar包,則對應的功能會自動加載擴展。要想理解springboot的自動裝配原理,我們首先要

原创 spring中load-time-weaver靜態aop處理,基於aspectJ的靜態aop處理

前面我們已經探討過基於spring的動態aop處理 spring動態aop處理 spring同時也遵循了aop的標準,提供了靜態aop的處理方式。 spring的配置增加如下配置開啓靜態aop: <context:load-ti

原创 spring中事務使用範例,事務傳播機制實現邏輯,底層原理,事務回滾,事務嵌套

在java中處理數據庫相關邏輯時一般都會用到事務相關處理,如果我們直接使用基於jdbc底層的事務處理,程序一般比較浮渣,spring的聲明式事務處理讓我們從繁雜的事務處理中得以解脫出來。 spring提供了兩種事務管理機制:

原创 java中反射橋接方法Method.isBridge

java在1.5帶來了泛型操作,但是在虛擬機底層字節碼而言,只有普通方法和變量,沒有泛型這一說,爲了實現相關功能: public interface IHello<T> { public void sayHello(T t

原创 spring中bean的獲取流程,getBean的實現邏輯

通過之前spring容器啓動過程分析,以ClassPathXmlApplicationContext爲例說明,我們看到在最後的 finishBeanFactoryInitialization完成了對單例bean的實例化步驟。 其最

原创 spring中aop使用示例,底層實現原理,jdk動態代理,cglib動態代理

總所周知,java是一個oop,面向對象的語言,以更貼近現實的描述來構造程序,但是也代理一些不好的或者說不方便的東西,比如當需要爲多個不具有繼承關係的對象引入同一個公共的行爲的時候,如日誌,安全檢查等,我們只能在每個對象中引用公共