什么是Mybaits?
Mybaits
半自動orm持久層框架,免除了幾乎所有的 JDBC 代碼以及設定引數和獲取結果集的作業,可以通過簡單的 XML 或注解來配置和映射原始型別、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 物件)為資料庫中的記錄
Mybaits框架核心組態檔
- configuration 根節點元素
- peopreties 包含資料庫連接相關引數
- settgs 設定Mybaits框架的運行時行為
- environments 可配置多組運行環境
- environment 配置運行環境(事務管理,資料源…)
- mappers 配置SQL映射檔案的位置
- mapper mappers的子元素
SqlSessionFactorybuilder
每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的實體為中心的.而使用SqlSessionFactorybuilder的原因就是把SqlSessionFactory 這個物件交給builder來創建,也就是創造者模式.
SqlSessionFactorybuilder可以拆分為3部分
- SqlSessionFactorybuilder:工人
- SqlSessionFactory:工廠
- SqlSession:產品
工廠(SqlSessionFactory)通過工人(SqlSessionFactorybuilder)
得到產品(SqlSession)
public class Usermapeerutil {
static SqlSession sqlSession = null;
public static SqlSession getSqlSession(){
String resource="mybaits-config.xml";
InputStream inputStream=null;
try {
inputStream = Resources.getResourceAsStream(resource);
}catch (IOException e){
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
作用域和生命周期
- SqlSessionFactorybuilder:
SqlSessionFactoryBuilder 實體的最佳作用域是方法作用域(也就是區域方法變數),也就是方法執行完畢,它被摧毀 - SqlSessionFactory:
SqlSessionFactory 的最佳作用域是應用作用域,它是一直存在的,直到你整個程式運行完畢,使用 SqlSessionFactory 的最佳實踐是在應用運行期間不要重復創建多次,多次重建 SqlSessionFactory 被視為一種代碼“壞習慣”, - SqlSession:
SqlSession的最佳的作用域是請求或方法作用域,也就是當你每次發起請求,都會打開一個SqlSession,當請求完成后將它關閉
每個執行緒都應該有它自己的 SqlSession 實體,SqlSession 的實體不是執行緒安全的,所以它是不能被共享的.
Sql映射
MyBatis 提供的所有特性都可以利用基于 XML 的映射語言來實作,這使得 MyBatis 在過去的數年間得以流行,
- cache – 該命名空間的快取配置,
- cache-ref – 參考其它命名空間的快取配置,
- resultMap – 描述如何從資料庫結果集中加載物件,是最復雜也是最強大的元素,
- sql – 可被其它陳述句參考的可重用陳述句塊,
- insert – 映射插入陳述句,
- update – 映射更新陳述句,
- delete – 映射洗掉陳述句,
- select – 映射查詢陳述句
<?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查找對應創建dao介面
根據方法名稱查找對應的sql陳述句
-->
<mapper namespace="com.cn.mapper.UserMapper">
<!--
每一種sql陳述句對應每一種標簽
resultType 回傳值型別
-->
<select id="login" resultType="com.cn.pojo.User">
select * from user where number=#{arg0} and password=#{arg1}
</select>
</mapper>
(還在學習中,第一次發文章,勿噴,有不足之處還望指點)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/274796.html
標籤:其他
上一篇:Centos7.4 如何使用cmake編譯安裝mysql
下一篇:MySQL整理----索引
