一、MyBatis其實是Ibatis3.0版本之後的持久化層框架【也就是和數據庫打交道的框架】!java
二、和數據庫打交道的技術有:mysql
原生的JDBC技術---》Spring的JdbcTemplate技術git
這些工具都是提供簡單的SQL語句的執行,可是和咱們這裏學的MyBatis框架還有些不一樣,github
框架是一整套的東西,例如事務控制,查詢緩存,字段映射等等。sql
三、原生JDBC操做數據庫的步驟:數據庫
編寫sql---->預編譯---->設置參數----->執行sql------->封裝結果緩存
四、原生的JDBC工具的缺點mybatis
1.功能簡單,sql語句編寫在java代碼裏面【一旦修改sql,就須要將java及sql都要從新編譯!】這屬於硬編碼高耦合的方式。app
2.咱們但願有開發人員本身編寫SQL語句,框架
而且但願SQL語句與java代碼分離,
將SQL語句編寫在xml配置文件中,
實現數據表中記錄到對象之間的映射!
sql和java編碼分開,功能邊界清晰,一個專一於業務,一個專一於數據,可使用簡單的XML或註解用於配置和原始映射,
將接口和Java的POJO映射成數據庫中的記錄,完成業務+底層數據庫的媒介!
五、MyBatis歷史
原是Apache的一個開源項目iBatis, 2010年6月這 個項目由Apache Software Foundation 遷移到了 Google Code,
隨着開發團隊轉投Google Code 旗下, iBatis3.x正式改名爲MyBatis ,代碼於 2013年11月遷移到Github(下載地址見後)。
iBatis一詞來源於「internet」和「abatis」的組合,是 一個基於Java的持久層框架。
iBatis提供的持久 層框架包括SQL Maps和Data Access Objects、(DAO)
六、MyBatis簡介:
MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。
MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis可使用簡單的XML或註解用於配置和原 始映射,將接口和Java的POJO(Plain Old JavaObjects,普通的Java對象)映射成數據庫中的記錄.
七、爲何要使用MyBatis?
MyBatis是一個半自動化的輕量級的持久化層框架。
JDBC
– SQL夾在Java代碼塊裏,耦合度高致使硬編碼內傷
– 維護不易且實際開發需求中sql是有變化,頻繁修改的狀況多見
Hibernate和JPA
– 長難複雜SQL,對於Hibernate而言處理也不容易
– 內部自動生產的SQL,不容易作特殊優化。
– 基於全映射的全自動框架,大量字段的POJO進行部分映射時比較困難。 致使數據庫性能降低。
對開發人員而言,核心sql仍是須要本身優化,sql和java編碼分開,功能邊界清晰,一個專一業務、 一個專一數據。
八、去哪裏找MyBatis?
https://github.com/mybatis/mybatis-3/
或者在百度直接搜索mybatis,而後找到github下的地址下載便可!
一、建立數據庫及數據表
1 CREATE DATABASE mytabis; 2 CREATE TABLE tbl_employee( 3 id INT(11) PRIMARY KEY AUTO_INCREMENT, 4 last_name VARCHAR(255), 5 age INT(3), 6 gender CHAR(1) 7 )
而後插入數據;INSERT INTO tbl_emp VALUES(NULL,'張三',20,1);
二、建立一個動態WEB工程,而後建立與上述數據表對應的實體類:
三、參考mybatis官方文檔]加入須要的jar包
[mybatis所須要的jar包,和數據庫打交道的jar包,以及看打印日誌所須要的log4j的jar包]:
log4j-1.2.17.jar //固然須要注意的是:log4j的jar包是須要log4j.xml文件的
mybatis-3.4.1.jar
mysql-connector-java-5.1.37-bin.jar
四、建立mytabis-config.xml文件並將mybatis文檔中的內容複製過來,並將數據庫配置信息換成本身的:
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
5 <configuration>
6 <environments default="development">
7 <environment id="development">
8 <transactionManager type="JDBC"/>
9 <dataSource type="POOLED">
10 <property name="driver" value="com.mysql.jdbc.Driver"/>
11 <property name="url" value="jdbc:mysql://localhost:3306/mytabis"/>
12 <property name="username" value="root"/>
13 <property name="password" value="123456"/>
14 </dataSource>
15 </environment>
16 </environments>
17 <!-- 將咱們寫好的sql映射文件必定要註冊到全局配置文件中 -->
18 <mappers>
19 <mapper resource="EmployeeMapper.xml"/>
20 </mappers>
21 </configuration>
五、建立測試用例,.複製mybatis官方文檔代碼,代碼以下:
1 public class MyBatisTest { 2 @Test 3 public void test() throws IOException { 4 String resource = "mytabis-config.xml"; 5 InputStream inputStream = Resources.getResourceAsStream(resource); 6 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 7
8 SqlSession sqlSession =null; 9 try{ 10 //2.獲取sqlSession實例,能直接執行已經映射的SQL語句
11 sqlSession= sqlSessionFactory.openSession(); 12 //須要兩個參數,第一個參數是sql語句的惟一標識, 13 //第二個參數是執行sql要用的參數
14 Employee employee = sqlSession.selectOne("com.neuedu.mybatis.EmployeeMapper.selectEmp",1); 15 System.out.println(employee); 16 }catch(Exception e){ 17
18 }finally{ 19 sqlSession.close(); 20 } 21
22 } 23
24 }
六、 建立sql語句的映射文件EmployeeMapper.xml;
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="com.neuedu.mybatis.EmployeeMapper">
6 <!--
7 namespace:名稱空間 8 id:sql語句的惟一標識 9 resultType:返回值類型 10 #{id}:接收參數傳遞過來的id值 11 -->
12 <select id="selectEmp" resultType="com.neuedu.mybatis.bean.Employee">
13 select id,last_name lastName,gender,email from tbl_employee where id = #{id} 14 </select>
15 </mapper>