MyBatis介紹及使用

1、介紹:

  一、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下的地址下載便可!

2、MyBatis的HelloWorld

  一、建立數據庫及數據表

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>
相關文章
相關標籤/搜索