mybatis入門及環境搭建
一、mybatis概述
1、mybatis是什麼
(1)MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis,實質上Mybatis對ibatis進行一些改進
(2)MyBatis是一個優秀的持久層框架,它對jdbc的操作資料庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如註冊驅動、建立connection、建立statement、手動設定引數、結果集檢索等jdbc繁雜的過程程式碼
(3)Mybatis通過xml或註解的方式將要執行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,並通過java物件和statement中的sql進行對映生成最終執行的sql語句,最後由mybatis框架執行sql並將結果對映成java物件並返回
2、mybatis框架原理
(1)圖解:
3、mybatis框架原理分析
(1)mybatis配置檔案,包括Mybatis全域性配置檔案和Mybatis對映檔案,其中全域性配置檔案配置了資料來源、事務等資訊;對映檔案配置了SQL執行相關的 資訊
(2)mybatis通過讀取配置檔案資訊(全域性配置檔案和對映檔案),構造出SqlSessionFactory,即會話工廠
(3)通過SqlSessionFactory,可以建立SqlSession即會話。Mybatis是通過SqlSession來操作資料庫的
(4)SqlSession本身不能直接操作資料庫,它是通過底層的Executor執行器介面來操作資料庫的。Executor介面有兩個實現類,一個是普通執行器,一個是快取執行器(預設)
(5)Executor執行器要處理的SQL資訊是封裝到一個底層物件MappedStatement中。該物件包括:SQL語句、輸入引數對映資訊、輸出結果集對映資訊。其中輸入引數和輸出結果的對映型別包括java的簡單型別、HashMap集合物件、POJO物件型別
二、mybatis環境搭建
1、下載mybatis
2、匯入jar包
(1)mybatis的核心包和依賴包;mysql的驅動包;Junit(非必須)
三、mybatis入門案例
1、編寫PO類
public class User {
private int id;
private String username;
private String sex;
private Date birthday;
private String address;
}
2、編寫全域性配置檔案
(1)位置:src下(classpath),檔名一般:SqlMapConfig.xml
(2)程式碼如下:
<?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>
<!-- 配置mybatis的環境資訊,與spring整合是,該資訊由spring來配置 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事務控制,由mybatis進行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置資料來源,採用mybatis連線池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 載入外部配置檔案 -->
<mappers>
<mapper resource="User.xml"></mapper>
</mappers>
</configuration>
3、查詢使用者
(1)查詢使用者配置檔案程式碼:
<?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:名稱空間,對statement的資訊進行管理 -->
<!-- 注意:在mapper代理時,它具有特殊及其重要的作用 -->
<mapper namespace="test">
<!-- 根據使用者ID查詢使用者資訊 -->
<!-- select:表示一個MappedStatement物件 -->
<!-- id:statement的唯一標識 -->
<!-- #{}:表示一個佔位符 ? -->
<!-- #{id}:裡面的id表示輸入引數的引數名稱,如果該引數是簡單型別,那麼#{}裡面的引數名稱可以任意 -->
<!-- parameterType:輸入引數的java型別 -->
<!-- resultType:輸出結果的所對映的java型別(單條結果所對應的java型別) -->
<select id="findUserById" parameterType="int" resultType="com.san.model.User">
select * from user where id=#{id}
</select>
</mapper>
(2)測試程式碼:
//根據id查詢使用者
@Test
public void Test1() throws IOException{
//全域性配置檔案的位置
String resource="SqlMapConfig.xml";
//載入全域性配置檔案
InputStream inputStream = Resources.getResourceAsStream(resource);
//建立SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//建立Sqlsession
SqlSession sqlSession = sqlSessionFactory.openSession();
//呼叫SqlSession的增刪改查方法
User user=sqlSession.selectOne("test.findUserById",1);
System.out.println(user);
//關閉資源
sqlSession.close();
}
4、模糊查詢
(1)模糊查詢配置檔案程式碼:
<!-- ${}:表示一個sql的連線符 -->
<!-- ${value}:裡面的value表示輸入引數的引數名稱,如果該引數是簡單型別,那麼${}裡面的引數名稱必須是value -->
<!-- ${}這種寫法存在sql注入的風險,所以要慎用!!但是在一些場景下,必須使用${},
比如排序時,動態傳入排序的列名,${}會原樣輸出,不加解釋 -->
<!-- 根據使用者名稱模糊查詢 -->
<select id="findUserByName" parameterType="java.lang.String" resultType="com.san.model.User">
select * from user where username like '%${value}%'
</select>
(2)測試程式碼:
//呼叫SqlSession的增刪改查方法
List<User> list=sqlSession.selectList("test.findUserByName","小明");
System.out.println(list);
5、新增使用者
(1)新增使用者配置檔案程式碼:
<!-- 新增使用者 -->
<!-- selectKey:查詢主鍵,在標籤內需要輸入查詢主鍵的sql -->
<!-- order:指定查詢主鍵的sql和insert語句的執行順序,相當於insert語句來說 -->
<!-- LAST_INSERT_ID:該函式是mysql的函式,獲取自增主鍵的ID,它必須配合insert語句一起使用 -->
<insert id="insertUser" parameterType="com.san.model.User">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user (username,birthday,sex,address)
values(#{username},#{birthday},#{sex},#{address})
</insert>
<!-- 自增主鍵(UUID) -->
<!-- UUID時,order的值要選擇為before -->
<insert id="insertUser2" parameterType="com.san.model.User">
<selectKey keyProperty="id" resultType="string" order="BEFORE">
SELECT UUID()
</selectKey>
insert into user (id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>
(2)測試:
//獲得sqlSession
SqlSession sqlSession = sessionFactory.openSession();
User user=new User();
user.setUsername("zhangsan");
user.setAddress("北京");
user.setSex("1");
sqlSession.insert("test.insertUser",user);
//提交事務,不提交不會將事務提交到資料庫,但是自增id還是會佔用
sqlSession.commit();
6、更新使用者
(1)更新使用者配置檔案程式碼:
<!-- 更新使用者資訊 -->
<update id="updateUser" parameterType="com.san.model.User">
update user set username=#{username},sex=#{sex} where id=#{id}
</update>
(2)測試:
User user=new User();
user.setUsername("李四");
user.setId(1);
user.setSex("男");
sqlSession.update("test.updateUser",user);
//增刪改都要提交事務
sqlSession.commit();
7、刪除使用者
(1)刪除使用者配置檔案程式碼:
<!-- 刪除使用者 -->
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
(2)測試:
sqlSession.delete("test.deleteUser",8);
//增刪改都要提交事務
sqlSession.commit();
相關推薦
mybatis入門及環境搭建
一、mybatis概述 1、mybatis是什麼 (1)MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis,實質
萌新--關於vue.js入門及環境搭建
art 安裝 list 建議 href pack 推薦 新手學 走了 十幾天閉關修煉,惡補了html跟css以及JavaScript相應的基礎知識,恰巧有個群友準備做開源項目,願意帶著我做,但是要求我必須懂vue.js,所以開始惡補vue.js相關的東西。 在淘寶上買了相關
MyBatis入門學習——環境搭建
在MyBatis官方文件上是這樣說的: MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,
(一)MyBatis入門&環境搭建
持久層概念與初始MyBatis MyBatis環境配置 1、持久層概念與初始MyBatis 根據百度給出的感念:“所謂“持久層”,也就是在系統邏輯層面上,專著於實現資料持久化的一個相對獨立的領域(Domain),是把數 據儲存到可掉電式儲存裝置中。持久層是負責
React入門之HelloWorld及環境搭建
關注React也已經很久了,一直沒能系統地深入學習,最近準備好好研究一下,並且親自動手做一些實踐。 學習一門語言也好,學習一個框架也好,都是從最初的hello world程式開始的,今天我們也來用React寫一個hello world出來,瞭解一下如何編寫及執
mybatis介紹與環境搭建
mybatis一、不用純jdbc的原因,即缺點。1、數據庫理解,使用時創建,不用時釋放,會對數據庫進行頻繁的鏈接開啟和關閉,造成數據庫的資源浪費,影響數據庫的性能。設想:使用數據庫的連接池。2、將sql語句硬編碼到java代碼中,不利於系統維護。設想:將sql放到配置文件中。3、向preparedstatem
Python零基礎學習系列之二--Python介紹及環境搭建
url 軟件包 三方庫 簡單的 lin 文件的 span 高級程序設計 擴展 1-1、Python簡介: Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年
flask-系統介紹及環境搭建1
技術 路由 退出 介紹 電影 登錄 pychar 前臺 處理 1.系統介紹 前臺首頁-電影篩選-電影列表- 播放詳情-評論:收藏-搜索-註冊-登錄-會員中心(修改會員資料,查看評論記錄,登錄日誌,收藏電影)。 後臺-標簽-電影管理-預告-會員-評論-收藏-日誌-權限管理-角
springboot整合mybatis(SSM開發環境搭建)
add bug fin () 3.0 config autoconf tro mysql 0.項目結構: 1.application.properties中配置整合mybatis的配置文件、mybatis掃描別名的基本包與數據源 server.po
Koa2介紹及環境搭建
對象 運行 體積 初始 window ini 基於 ddl 執行 Koa2是現在最流行的基於Node.js平臺的web開發框架,它很小,但擴展性很強。Koa給人一種幹凈利落的感覺,體積小、編程方式幹凈。國內很多知名互聯網公司都在使用,BAT(百度、阿裏、騰訊)全部都在使
spring-boot入門之一——環境搭建
技術分享 aging 一次 span left spa acl 自帶 PE 一、版本準備eclipse: Eclipse Mars.2 (4.5.2)maven: Apache Maven 3.5.3spring boot:
NFS應用場景及環境搭建
環境 上一個 nfs 光盤掛載 images sta process nfs應用 install 有LAMP架構的叫lamp 另一臺虛擬機叫luwenyue1.把兩臺虛擬機改成不同名字的虛擬機vi /etc/hostname一個用虛擬機用搭好LAMP架構的虛擬機,一個用新
新手學習Linux——NFS應用場景及環境搭建
log 創建 watermark 51cto 輸入 ado dir ins 共享目錄 以上為解釋神圖。 ———————————————————分割線———————————————————一、接下來我們的操作在服務端進行。1、首先準備兩臺配置好IP地址和yum源的虛擬機。 2
MFS分布式文件系統的原理及環境搭建
故障 firewalld 保存 tap 訪問 擴容 ports x86 pty 概述: NFS網絡文件系統在性能與容量上無法勝任更高的要求,而本篇講的MFS(MooseFS)可以提供容量PB級別的共享存儲,無需昂貴的專業硬件服務器,自身就擁有冗余功能及動態擴容功能,能保證數
Python數據分析與挖掘第一篇—基本介紹及環境搭建
sim python 模塊 功能 對數 numpy 分析 沒有 兩種 一,數據分析與挖掘簡介 所謂數據分析,是對已有的數據進行分析,提取一些有價值的信息,比如平均數,標準差等。而數據挖掘,是對大量的信息進行分析和挖掘,得到一些未知的,有價值的信息。如今日頭條類的新聞推送
RN入門-01-環境搭建
環境搭建(作業系統Mac-10.13.4 ) 一:軟體安裝 1.1 Homebred Homebrew, Mac系統的包管理器,用於安裝NodeJS和一些其他必需的工具軟體。 /usr/bin/ruby -e "$(curl -fsSL https://raw
微信公共號(企業號)開發框架-gochat的從零開始教程(一): 前期準備及環境搭建
最近開發了一個基於go語言的微信公共號/企業號的開發框架——gochat, 可以用來進行微信公共號/企業號的快速開發 gochat的架構是在 beego的基礎上完成的,而beego是一個非常強大的HTTP 框架框架(騰訊、京東、360、微博都有平臺使用了beego),
Python介紹及環境搭建
1-1、Python簡介: Python是一種解釋型、面向物件、動態資料型別的高階程式設計語言。Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。像Perl語言一樣, Python 原始碼同樣遵循 GPL(GNU General Public
JAVA WEB快速入門之環境搭建
公司 linux下 前言 變量 允許 簡要介紹 web開發 ces localhost 前言 我是一直致力於:.NET技術棧、WEB前端、架構設計相關的開發與管理工作,但因國內大環境影響及公司技術方向發生轉變(由.NET全部轉為JAVA),需要熟練掌握JAVA WEB相關
jQuery基礎—1、jQuery概述及環境搭建
1.1JQuery是什麼? jQuery在javascript基礎上開發出來的,對javascript進行了封裝,功能更強大,操作更方便的一種javascript庫。 JQuery=Javascript + Query(查詢)= 通過Javascript從文件中查詢元素,並對其進行操作。