MyBatis的執行原理

2021-08-18 18:42:22 字數 2616 閱讀 3072

答案就是動態**,關於動態**的內容,博主在之前的博文中已經詳細介紹過了,此處不再贅述。

本文主要探析一下mybatis在執行資料庫操作時的執行原理。

package com

.maowei

.learning

.orm

.dao

;import com

.maowei

.learning

.orm

.user

;public inte***ce userdao

<?xml version="1.0" encoding="utf-8" ?>

namespace="com.maowei.learning.orm.dao.userdao">

id="finduserbyid"

resulttype="user"

parametertype="string">

select * from user where id = #

select>

id="adduser"

parametertype="user" >

insert into user(id,name,age) values(#,#,#)

insert>

id="deleteuserbyid"

parametertype="string">

delete from user where id = #

delete>

id="updateuserbyid"

parametertype="user" >

update user set name = #, age = # where id = #

update>

為了能在初始化的時候被載入,還需要如下配置:

以上三步算是使用mybatis運算元據庫必須的步驟,那我們如何呼叫呢?

//通過配置檔案資訊,建立sqlsessionfactory物件

sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(resources.getresourceasstream("spring/sqlmapconfig.xml"));

//通過sqlsessionfactory物件建立資料庫會話

sqlsession session1 = sqlsessionfactory.opensession(true);

logger.debug("開始查詢使用者資訊");

logger.info(dao1.finduserbyid("a001").tostring());

public

}public

throw

}try catch (exception e)

}

public t newinstance(sqlsession sqlsession) 

}

public

class

implements

invocationhandler, serializable catch (throwable t)

}} ……

}

public object execute(sqlsession sqlsession, object args) 

case update:

case delete:

case select:

if (method.returnsvoid() && method.hasresulthandler()) else

if (method.returnsmany()) else

if (method.returnsmap()) else

if (method.returnscursor()) else

break;

case flush:

result = sqlsession.flushstatements();

break;

default:

throw

new bindingexception("unknown execution method for: " + command.getname());

}if (result == null && method.getreturntype().isprimitive() && !method.returnsvoid())

return result;

}

public

static

class

sqlcommand else

string parentstatementname = method.getdeclaringclass().getname() + "." + method.getname();

if (configuration.hasstatement(parentstatementname)) }……

}……

}

mybatis的執行原理

mybatis執行開始時,使用resources類將磁碟上面的核心配置檔案載入到記憶體中,得到乙個輸入流。inputstream is resources.getresourceasstream mybatis.xml 然後,通過輸入流作為引數傳遞給xmlconfigbuilder,建立乙個xmlc...

MyBatis的執行原理

為什麼要使用mybatis?jdbc的弊端 什麼是框架?框架是乙個半成品,已經對基礎的 進行了封裝並提供相應的api,開發者在使用框架是直接呼叫封裝好的api可以省去很多 編寫,從而提高工作效率和開發速度。框架定義 框架是一種經過校驗 具有一定功能的半成品軟體。經過校驗 指框架本身經過測試 並且框架...

mybatis執行原理

1 獲取sqlsessionfactory物件 解析檔案的每乙個資訊儲存在configuration中,返回包含configuration的defaultsqlsessionfactory 2 獲取sqlsession物件 返回乙個defaultsqlsession物件,包含executor和con...