Mybatis環(huán)境配置及測試詳解
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。
MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)為數(shù)據(jù)庫中的記錄。
一、mybatis環(huán)境配置
1.通過maven的pom.xml文件引入mybatis需要的包
在其<dependencies></dependencies>標(biāo)簽中添加如下代碼
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
2.在src/main/resources下新建mybatis-config.xml文件
并進行xml文件和config的dtd文件的聲明
<?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">
3.在mybatis-config.xml文件中的<configuration></configuration>中對數(shù)據(jù)庫進行配置
<configuration>
<settings>
<!-- 開啟駝峰命名轉(zhuǎn)換,若底層數(shù)據(jù)庫表項為goods_ID,實體類為goodsId ,則自動轉(zhuǎn)換-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 設(shè)置默認指向的數(shù)據(jù)庫 -->
<environments default="dev">
<environment id="dev">
<!-- 采用JDBC方式對數(shù)據(jù)庫事務(wù)進行commit/rollback -->
<transactionManager type="JDBC"></transactionManager>
<!-- 采用連接池的方式管理數(shù)據(jù)庫連接 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
4.通過SqlSessionFactory構(gòu)建SqlSession會話實例
每個基于 MyBatis 的應(yīng)用都是以一個 SqlSessionFactory 的實例為核心的。SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個預(yù)先配置的 Configuration 實例來構(gòu)建出 SqlSessionFactory 實例。
從 XML 文件中構(gòu)建 SqlSessionFactory 的實例非常簡單,建議使用類路徑下的資源文件進行配置。 但也可以使用任意的輸入流(InputStream)實例,比如用文件路徑字符串或 file:// URL 構(gòu)造的輸入流。MyBatis 包含一個名叫 Resources 的工具類,它包含一些實用方法,使得從類路徑或其它位置加載資源文件更加容易。
通常SqlSession是全局唯一的,通過MybatisUtils工具類減少重復(fù)代碼
public class MybatisUtils {
//利用static靜態(tài) 屬于類而不屬于對象 , 保證全局唯一
private static SqlSessionFactory sqlSessionFactory = null ;
//利用靜態(tài)塊在初始化類時實力話SqlSessionFactory
static {
Reader reader = null;
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
} catch (IOException e) {
e.printStackTrace();
//初始化過程中出現(xiàn)的異常
throw new ExceptionInInitializerError(e) ;
}
}
/**
* 創(chuàng)建一個新的sqlsession對象
* @return sqlsession對象
* */
public static SqlSession openSession(){
return sqlSessionFactory.openSession() ;
}
public static void closeSession(SqlSession sqlSession){
if(sqlSession != null ){
sqlSession.close();
}
}
}
5.通過SqlSession對數(shù)據(jù)庫進行操作
在entity包下創(chuàng)建要操作的數(shù)據(jù)庫表對應(yīng)的實體類(必須使用駝峰命名和設(shè)置get和set方法),同時在resources目錄下創(chuàng)建mappers目錄,在mappers目錄下創(chuàng)建與該實體類同名的xml文件,在對其進行xml聲明和mapperdtd文件聲明(注意與mybatis-config.xml的dtd文件聲明的區(qū)別)
<?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">
然后在mybatis-config.xml文件引入該實體與數(shù)據(jù)庫的映射。即在其<mappers></mappers>標(biāo)簽中添加映射xml文件路徑
<mappers>
<mapper resource="mappers/goods.xml" />
<mapper resource="mappers/goods_detail.xml" />
</mappers>
當(dāng)數(shù)據(jù)庫列字段名為多單詞且用"_"拼接時,還需在其<configuration></configuration>標(biāo)簽中開啟駝峰命名轉(zhuǎn)換,使Mybatis自動完成映射。
<settings>
<!-- 開啟駝峰命名轉(zhuǎn)換,若底層數(shù)據(jù)庫表項為goods_ID,實體類為goodsId ,則自動轉(zhuǎn)換-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
到此為止,mybatis需要的配置就已全部完成。
運行程序測試結(jié)果
在 src 源碼目錄下建立 一個類叫作:HelloWord, 來運行測試配置環(huán)境是否成功,具體代碼如下示:
import java.io.Reader;
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 com.yiibai.mybatis.models.*;
/**
*
* @author yiibai
* @copyright //www.dhdzp.com
* @date 2015/09/22
*/
public class HelloWord {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("config/Configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlSessionFactory;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SqlSession session = sqlSessionFactory.openSession();
try {
User user = (User) session.selectOne(
"com.yiibai.mybatis.models.UserMapper.GetUserByID", 1);
if(user!=null){
String userInfo = "名字:"+user.getName()+", 所屬部門:"+user.getDept()+", 主頁:"+user.getWebsite();
System.out.println(userInfo);
}
} finally {
session.close();
}
}
}
現(xiàn)在運行這個程序,不是得到查詢結(jié)果了?正確的輸出結(jié)果應(yīng)該如下:
名字:yiibai, 所屬部門:Tech, 主頁://www.dhdzp.com
到此這篇關(guān)于Mybatis環(huán)境配置及測試詳解的文章就介紹到這了,更多相關(guān)Mybatis環(huán)境配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決try-catch捕獲異常信息后Spring事務(wù)失效的問題
這篇文章主要介紹了解決try-catch捕獲異常信息后Spring事務(wù)失效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Spring Cache整合Redis實現(xiàn)方法詳解
這篇文章主要介紹了Spring Cache整合Redis實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
解決idea中java出現(xiàn)無效的源發(fā)行版問題
這篇文章主要給大家介紹了關(guān)于解決idea中java出現(xiàn)無效的源發(fā)行版問題的相關(guān)資料,無效的源發(fā)行版是指IntelliJ IDEA無法正確識別和處理的源代碼版本,這可能是由于錯誤的配置、缺少依賴項、不兼容的插件或其他問題導(dǎo)致的,需要的朋友可以參考下2024-01-01

