使用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 ,難免會有錯誤的地方,希望能夠和各位路過的大神們多多交流!!!

發佈了40 篇原創文章 · 獲贊 29 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章