1.什么是Mybatis
MyBatis 是支持普通 SQL查詢,存儲(chǔ)過程和和高級(jí)映射的優(yōu)秀持久層框架。MyBatis 使用簡(jiǎn)單的 XML或注解用于配置和原始映射,將接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
2.導(dǎo)入相關(guān)包
以Myeclipse作為開發(fā)工具,創(chuàng)建一個(gè)web工程,將MyBatis的jar包導(dǎo)入在WebRoot\WEB-INF\lib目錄下即可。
3.配置流程
使用MyBatis最主要的是對(duì)xml文件的配置。首先應(yīng)該加載的是總配置文件Configuration.xml。Configuration.xml文件包含了數(shù)據(jù)庫(kù)的信息,即數(shù)據(jù)庫(kù)的驅(qū)動(dòng)、JDBC連接數(shù)據(jù)庫(kù)時(shí)的url、數(shù)據(jù)庫(kù)用戶名以及密碼。還有對(duì)其他sql映射文件(User.xml)的路徑放在mappers標(biāo)簽中。MyBatis可以通過相應(yīng)的方法讀取Configuration.xml中關(guān)于數(shù)據(jù)信息的語(yǔ)句,從而代替了以往在java代碼中使用jdbc對(duì)數(shù)據(jù)庫(kù)的連接。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/sql"/>
<property name="username" value="634839596"/>
<property name="password" value="DNFdmc2013"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="many/one/sql/Teacher.xml"/>
</mappers>
其次就是對(duì)sql映射文件的配置,該文件包含了數(shù)據(jù)庫(kù)中相對(duì)應(yīng)要執(zhí)行的sql語(yǔ)句的表的具體信息,執(zhí)行語(yǔ)句放在相應(yīng)的標(biāo)簽中。將表具體信息放在resultMap映射集合中,resultMap中的column要與表中的列對(duì)應(yīng),property要與javaBean對(duì)應(yīng),jdbcType要與數(shù)據(jù)類型對(duì)應(yīng)。執(zhí)行sql語(yǔ)句后,將操作數(shù)據(jù)庫(kù)的結(jié)果按照映射的配置進(jìn)行轉(zhuǎn)換,可以轉(zhuǎn)換成HashMap、JavaBean或者基本數(shù)據(jù)類型,并將最終結(jié)果返回。
<mapper namespace="many.one.mapper.TeacherMapper">
<resultMap type="many.one.entiry.Teacher" id="TeacherResult">
<id column="t_id" jdbcType="INTEGER" property="t_id" />
<result column="t_name" jdbcType="VARCHAR" property="username" />
<result column="t_password" jdbcType="VARCHAR" property="password" />
</resultMap>
<select id="Exist" resultMap="TeacherResult" resultType="many.one.entiry.Teacher">
select t_name,t_password
from teacher
<where>
and t_name=#{username}
</where>
</select>
4.處理流程
(A)根據(jù)SQL的ID查找對(duì)應(yīng)的MappedStatement對(duì)象。
(B)根據(jù)傳入?yún)?shù)對(duì)象解析MappedStatement對(duì)象,得到最終要執(zhí)行的SQL和執(zhí)行傳入?yún)?shù)。
(C)獲取數(shù)據(jù)庫(kù)連接,根據(jù)得到的最終SQL語(yǔ)句和執(zhí)行傳入?yún)?shù)到數(shù)據(jù)庫(kù)執(zhí)行,并得到執(zhí)行結(jié)果。
(D)根據(jù)MappedStatement對(duì)象中的結(jié)果映射配置對(duì)得到的執(zhí)行結(jié)果進(jìn)行轉(zhuǎn)換處理,并得到最終的處理結(jié)果。
(E)釋放連接資源。