答案就是動態**,關於動態**的內容,博主在之前的博文中已經詳細介紹過了,此處不再贅述。
本文主要探析一下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...