1. 程式人生 > >使用mybatis 操作資料庫的例項程式

使用mybatis 操作資料庫的例項程式

這裡寫圖片描述

一、理解什麼是mybatis

MyBatis 是支援普通 SQL 查詢,儲存過程和高階對映的優秀持久層框架。 MyBatis 消除了幾乎所有的 JDBC 程式碼和引數的手工設定以及對結果集的檢索。 MyBatis 可以使用簡單的XML 或註解用於配置和原始對映,將介面和 Java 的 POJO( Plain Old Java Objects,普通的Java 物件)對映成資料庫中的記錄.

1)MyBATIS 目前提供了三種語言實現的版本,包括:Java、.NET以及Ruby。(我主要學習java,就講java的使用)
2)它提供的持久層框架包括SQL Maps和Data Access Objects(DAO)。
3)mybatis與hibernate的對比?

mybatis提供一種“半自動化”的ORM實現。
這裡的“半自動化”,是相對Hibernate等提供了全面的資料庫封裝機制的“全自動化”ORM實現而言,“全自動”ORM實現了POJO和資料庫表之間的對映,以及 SQL 的自動生成和執行。
而mybatis的著力點,則在於POJO與SQL之間的對映關係(還不是很理解這裡)。
二、簡單例子(快速入門)

1)建立java web專案
這裡我建立的是java web專案。其實建立簡單的java 專案也是可以的,不一定非要用web專案。專案建立起來後,

這裡寫圖片描述

2)匯入jar包
這裡需要匯入兩個jar包:匯入mybatis-3.3.0.jar 和 ojdbc.jar。注意:匯入之後需要build path ,將匯入的包變為奶瓶狀,如上圖所示。

3)建立資料庫
因為平時使用的資料庫多為Oracle,這裡也採用了Oracle資料庫。建立了一個表:tb_person(裡面還有id,name ,password),採用mybatis管理資料庫實現對 tb_person 表的操作。

4)使用到的類和檔案
程式中使用到的類:User.java ,Test.java 。使用到的XML檔案為 User.xml , configuration.xml 。

5)程式原始碼
User.java

package mybatis;

public class User {    
    private int id;    
    private
String name; private String password; public User(){} public User(int id, String name) { this.id = id; this.name = name; } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + this.id + ", name=" + this.name + ", password=" + this.password + "]"; } }

Test.java

package mybatis;

import java.io.IOException;    
import java.io.Reader;    
import java.util.List;    

import org.apache.ibatis.io.Resources;    
import org.apache.ibatis.session.SqlSession;    
import org.apache.ibatis.session.SqlSessionFactory;    
import org.apache.ibatis.session.SqlSessionFactoryBuilder;    

public class Test {    
    public static void main(String[] args) throws IOException {    
        String resource = "configuration.xml";    
       Reader reader = Resources.getResourceAsReader(resource);    
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);    
        SqlSession session = ssf.openSession();    
        try{    
            User user = session.selectOne("User.selectUser", 2);   

            System.out.println(user.getName());    
            System.out.println(user);    
            System.out.println("--------------分隔線---------------");    
            //怎麼樣保證取出來的只是想要查詢的部分呢
            List<User> users = session.selectList("User.selectUsers");    
            for(int i=0; i<users.size(); i++) {    
                System.out.println(users.get(i));    
            }

            System.out.println("--------------分隔線---------------");   


        } catch (Exception e) {    
            e.printStackTrace();    
        } finally {    
            session.close();    
        }    
    }    
}    

configuration.xml

<?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>    
    <typeAliases>    
        <typeAlias alias="User" type="mybatis.User"></typeAlias>  

    </typeAliases>   



    <environments default="development">    
        <environment id="development">    
            <transactionManager type="JDBC"></transactionManager>    
            <dataSource type="POOLED">    
                <property name="driver" value="oracle.jdbc.driver.OracleDriver" />    
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />    
                <property name="username" value="*****" />    
                <property name="password" value="*****" />    
            </dataSource>    
        </environment>    
    </environments>    

    <mappers>    
        <mapper resource="mapper/User.xml"/>    

    </mappers>    

</configuration> 

User.xml
這裡寫的是sql語句

<?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">    


<mapper namespace="User">    
    <select id="selectUser" parameterType="int" resultType="User">    
        SELECT * FROM tb_person WHERE id = #{id}    
    </select>    

    <select id="selectUsers" resultType="User">    
        SELECT * FROM tb_person    
    </select>  



</mapper>  

三、注意事項

1. mybatis 查詢返回為NULL
注意一個問題:實體類的欄位名稱應該和資料庫裡面的欄位名稱保持一致,否則查詢出的結果返回全部為null。
2. session.selectOne() 返回的是單條查詢語句
3. session.selectList(“User.selectUsers”) 返回的是一個List ,可以實現返回一個集合
4.configuration.xml 檔案應該放在src的根目錄下,否則會出現錯誤

初次學習mybatis ,難免會有錯誤的地方,希望能夠和各位路過的大神們多多交流!!!