手把手教你搭MyBatis框架

MyBatis簡介

MyBatis的前身叫iBatis,是一個持久層的框架,是apache下的頂級項目。本是apache的一個開源項目, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis。MyBatis 是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。

MyBatis 是一個可以自定義SQL、存儲過程和高級映射的持久層框架,MyBatis可以將向 preparedStatement 中的輸入參數自動進行輸入映射,將查詢結果集靈活映射成java對象。(輸出映射)。MyBatis 移除了大部分的JDBC代碼、手工設置參數和結果集重獲。MyBatis 只使用簡單的XML 和註解來配置和映射基本數據類型、Map 接口和POJO 到數據庫記錄。相對Hibernate和Apache OJB等“一站式”ORM解決方案而言,Mybatis 是一種“半自動化”的ORM實現。

 

需要使用的Jar包:

mybatis-3.4.6.jar(mybatis核心包)

mybatis-spring-1.0.0.jar(與Spring結合包)

Mybatis的運行環境(jar包)下載

mybaits的代碼由github.com管理,地址:https://github.com/mybatis/mybatis-3/releases

下載完成mybatis-3.4.6.zip解壓即可 

mybatis-3.4.6.jar:mybatis的核心包

lib:mybatis的依賴包

mybatis-3.4.6.pdf:mybatis使用手冊

MyBatis環境搭建步驟

所需jar包:

log4j-1.2.16.jar

mybatis-3.2.2.jar

mysql-connector-java-5.1.0-bin.jar

項目結構:

1、新建JavaWeb項目

2、導入jar包,WebContent/WEB-INF/lib文件夾下,然後全部選中所有jar包,右鍵build path構建一下即可。

如果你是使用maven構建工程的話,那就對應在pom.xml文件中添加對應依賴即可。

3、項目 → 右鍵 → new → source folder 創建包資源管理器 → 這裏創建的是 resources

4、在 resources 文件夾下創建文件名爲 log4j.properties 的文件 複製如下代碼,保存:

# Global logging configuration
# 開發環境下,日誌級別要設置成DEBUG或者ERROR
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis默認使用log4j作爲輸出日誌信息。

5、在 resources 文件夾下創建文件名爲 mybatis-config.xml 的核心配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
 <configuration>
     <!-- 和spring整合後 environments配置將廢除-->
 	<!-- 引入 database.properties 文件  -->
 	<properties resource="database.properties"></properties>
 	<!-- 配置log4j,配置後後臺會自動對SQL語句輸入 -->
 	<settings>
 		<setting name="logImpl" value="LOG4J"/>
 	</settings>
 	
 	<environments default="development">
 		<environment id="development">
 			<!-- 配置事務管理,此處採用JDBC的事務管理 -->
 			 <transactionManager type="JDBC"/>
 			 <!-- 數據庫連接池,配置數據庫連接信息 -->
			 <dataSource type="POOLED">
				 <property name="driver" value="${driver}"/>
				 <property name="url" value="${url}"/>
				 <property name="username" value="${user}"/>
				 <property name="password" value="${password}"/>
			 </dataSource>
 		</environment>
 	</environments>
 	
 	<mappers>
 		<!-- resource:dao層映射的路徑 -->
 		<mapper resource="com/yuntu/dao/user/UserMapper.xml"/>
 	</mappers>
 </configuration>

mybatis-config.xml是mybatis核心配置文件,上邊文件的配置內容爲數據源、事務管理。

6、在 resources 文件夾下創建文件名爲 database.properties 的數據庫配置文件

driver=com.mysql.jdbc.Driver
#在和mysql傳遞數據的過程中,使用unicode編碼格式,並且字符集設置爲utf-8
url=jdbc:mysql://127.0.0.1:3306/SMBMS?useUnicode=true&characterEncoding=utf-8
user=root
password=123456

7、創建實體類(POJO)

8、創建Dao層,新建SQL映射文件(UserMapper.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <!--
     namespace:命名空間,作用爲,對sql進行分類化管理,理解sql隔離,
     注意:使用mapper代理方法開發,namespace有特殊作用
 -->
 <mapper namespace="test">
    <!--在映射文件中配置sql-->
    <!--
        通過select執行數據庫查詢
        id:標識映射文件的sql
        將sql語句封裝到mappedStatement對象中,所以將id稱爲Statement的id
        resultType:指定sql輸出結果的所映射的Java對象類型,select指定的resultType表示將單條記錄映射成的Java對象
    -->
    <!-- 查詢用戶總數 -->
 	<select id="count" resultType="int">
 		select count(1) as count from smbms_user
 	</select>
</mapper>

9、創建測試類(JUnit Test單元測試)

實現思路:

1.定義mybatis配置文件名字的變量

String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource);

2.創建會話工廠

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.通過工廠得到SqlSession

SqlSession sqlSession = sqlSessionFactory.openSession();

4. 通過SqlSession操作數據庫

//第一個參數:映射文件中的statement的id,等於namespace+"."+statement的id

//第二個參數:指定和映射文件中所匹配的所有parameterType的類型

//sqlSession.selectOne()的結果是映射文件中所匹配的resultType類型的對象 User user =

sqlSession.selectOne("test.findUserById",1);

System.out.println(user); /

/釋放資源

sqlSession.close();

 

示例:

package com.yuntu.test;
import static org.junit.jupiter.api.Assertions.*;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import org.junit.jupiter.api.Test;

class UserMapperTest {
	private Logger logger = Logger.getLogger(UserMapperTest.class);
	@Test
	void test() {
        //mybatis配置文件
		String resource="mybatis-config.xml";
		SqlSession sqlSession = null;
		int count=0;//用來接收結果
		try {
			//1.根據 Resources(mybatis配置文件名) 獲取 mybatis-config.xml 的輸入流
			InputStream is = Resources.getResourceAsStream(resource);
			//2.創建核心對象 SqlSessionFactory 對象,來完成配置文件的讀取
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
			//3.創建SqlSession對象
			sqlSession=factory.openSession();
			//4.調用mapper文件對數據進行操作 ps:檢查mapper是否在mybatis-config.xml中進行配置
			count = sqlSession.selectOne("com.yuntu.dao.user.UserMapper.count");
			logger.debug("當前系統一共有"+count+"用戶");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章