1. 程式人生 > >Mybatis入門例項(一)

Mybatis入門例項(一)

ibatis的3.X版本改名了,叫做MyBatis,暫且不討論之間的差別,今天來做一個MyBatis的小例子

其實MyBatis雖然在原始碼層面上和ibatis差別較大,但是我們實際用的時候差別並不大,只不過xml裡面的標籤名變了變,類名變了而已,其他的基本上一樣.

如果學過hibernate,會發現Mybatis裡面的類名等和hibernate的很接近,這樣做就是為了降低開發人員的學習成本.

廢話少說,上資料庫,mysql的,超級簡單

Sql程式碼  收藏程式碼
  1. CREATETABLE `person` (  
  2.   `id` int(11) NOTNULL AUTO_INCREMENT,  
  3.   `name
    varchar(255) DEFAULTNULL,  
  4.   `age` int(11) DEFAULTNULL,  
  5.   `sex` varchar(255) DEFAULTNULL,  
  6.   `passwordvarchar(255) DEFAULTNULL,  
  7.   PRIMARYKEY (`id`)  
  8. )  

,然後將mybatis的jar包和mysql的jar包加入,僅此兩個包就行了,如果需要日誌之類的再加入log4j等. 

再來一個vo,Person.java

Java程式碼  收藏程式碼
  1. package org.qiuqiu.vo;  
  2. publicclass Person {  
  3.     private
    int id;  
  4.     private String name;  
  5.     privateint age;  
  6.     private String sex;  
  7.     private String password;  
  8.     publicint getId() {  
  9.         return id;  
  10.     }  
  11.     publicvoid setId(int id) {  
  12.         this.id = id;  
  13.     }  
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.     publicvoid setName(String name) {  
  18.         this.name = name;  
  19.     }  
  20.     publicint getAge() {  
  21.         return age;  
  22.     }  
  23.     publicvoid setAge(int age) {  
  24.         this.age = age;  
  25.     }  
  26.     public String getSex() {  
  27.         return sex;  
  28.     }  
  29.     publicvoid setSex(String sex) {  
  30.         this.sex = sex;  
  31.     }  
  32.     public String getPassword() {  
  33.         return password;  
  34.     }  
  35.     publicvoid setPassword(String password) {  
  36.         this.password = password;  
  37.     }  
  38. }  

 接下來我們需要一個sql對映檔案(xml),將sql和資料庫對映,person.xml

Xml程式碼  收藏程式碼
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mappernamespace="com.qiuqiu.dao.PersonDao">
  4.     <cachetype="org.mybatis.caches.ehcache.EhcacheCache"/>
  5.     <selectid="selectUserById"parameterType="int"resultType="org.qiuqiu.vo.Person">
  6.         select * from person where id=#{id}   
  7.     </select>
  8. </mapper>

Mybatis的應用和ibatis的最大區別就是名稱空間,在ibatis中名稱空間是可選的,但是在Mybatis中是強制性的,這樣更好,更加規範了 

最後mybatis的執行需要一個環境配置,該配置採用Configuration.xml,這個檔名貌似是官方建議的,不過你隨便修改都行,只要寫程式的時候對應上就行了

Xml程式碼  收藏程式碼
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4.     <environmentsdefault="myexample">
  5.         <environmentid="myexample">
  6.             <transactionManagertype="JDBC"/>
  7.             <dataSourcetype="POOLED">
  8.                 <propertyname="driver"value="com.mysql.jdbc.Driver"/>
  9.                 <propertyname="url"value="jdbc:mysql://localhost:3306/test"/>
  10.                 <propertyname="username"value="root"/>
  11.                 <propertyname="password"value="root"/>
  12.             </dataSource>
  13.         </environment>
  14.     </environments>
  15.     <mappers>
  16.         <mapperresource="org/qiuqiu/vo/person.xml"/>
  17.     </mappers>
  18. </configuration>

 這個檔案裡面的environment標籤代表了資料庫的各種配置,事務標籤就不說了,資料來源就不用我多說了吧.

下面就可以直接用MyBatis訪問資料庫了,寫一個測試類Test.java

Java程式碼  收藏程式碼
  1. package org.qiuqiu.test;  
  2. import java.io.IOException;  
  3. import org.apache.ibatis.io.Resources;  
  4. import org.apache.ibatis.session.SqlSession;  
  5. import org.apache.ibatis.session.SqlSessionFactory;  
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  7. import org.qiuqiu.vo.Person;  
  8. publicclass Test {  
  9.     publicstaticvoid main(String[] args) {  
  10.         SqlSessionFactory factory = null;  
  11.         try {  
  12.             factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("Configuration.xml"));  
  13.         } catch (IOException e) {  
  14.             e.printStackTrace();  
  15.         }  
  16.         SqlSession sqlSession = factory.openSession();  
  17.         Person p = (Person) sqlSession.selectOne("com.qiuqiu.dao.PersonDao.selectUserById"5);  
  18.         System.out.println(p.getName());  
  19.     }  
  20. }