天天看點

一、Mybatis介紹

我剛剛終于完成了一個增删改查的查,感覺離目标又近了一步,哈哈。。。加油

一、Mybatis介紹

 MyBatis是一個支援普通sql查詢,存儲過程和進階映射的優秀持久層架構,Mybatis消除了幾乎所有的JDBC代碼和參數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的xml或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成資料庫中的記錄。

二、mybatis快速入門

     2.1、準備開發環境

1、建立測試項目,普通java項目或者是JavaWeb項目均可,如下圖所示:

一、Mybatis介紹

2、添加相應的jar包

【mybatis】

         mybatis-3.1.1.jar

【MYSQL驅動包】

    mysql-connector-java-5.1.7-bin.jar

一、Mybatis介紹

3、建立資料庫和表,針對MySQL資料庫

  SQL腳本如下:

create database mybatis;
 use mybatis;
 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
 INSERT INTO users(NAME, age) VALUES('孤傲蒼狼', 27);
 INSERT INTO users(NAME, age) VALUES('白虎神皇', 27);      

 将SQL腳本在MySQL資料庫中執行,完成建立資料庫和表的操作,如下:

一、Mybatis介紹

到此,前期的開發環境準備工作全部完成。

2.2、使用MyBatis查詢表中的資料

1、添加Mybatis的配置檔案conf.xml

 在src目錄下建立一個conf.xml檔案,如下圖所示

一、Mybatis介紹

conf.xml檔案中的内容如下:

2、定義表所對應的實體類,如下圖所示:

一、Mybatis介紹

User類的代碼如下:

package me.gacl.domain;

 /**
  * @author gacl
   * users表所對應的實體類
   */
 public class User {

    //實體類的屬性和表的字段名稱一一對應
    private int id;
     private String name;
    private int age;

    public int getId() {
        return id;
     }

     public void setId(int id) {
         this.id = id;
    }
 
     public String getName() {
         return name;
     }
 
    public void setName(String name) {
        this.name = name;
    }

     public int getAge() {
         return age;
     }
 
     public void setAge(int age) {
         this.age = age;
     }
 
     @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
     }
 }      

3、定義操作users表的sql映射檔案userMapper.xml

  建立一個me.gacl.mapping包,專門用于存放sql映射檔案,在包中建立一個userMapper.xml檔案,如下圖所示:

一、Mybatis介紹

 userMapper.xml檔案的内容如下:

resultType="me.gacl.domain.User">        select * from users where id=#{id}    
 
      

4、在conf.xml檔案中注冊userMapper.xml檔案

5、編寫測試代碼:執行定義的select語句、

建立一個Test1類,編寫如下的測試代碼:

package me.gacl.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
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 Test1 {

    public static void main(String[] args) throws IOException {
        //mybatis的配置檔案
        String resource = "conf.xml";
        //使用類加載器加載mybatis的配置檔案(它也加載關聯的映射檔案)
        InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
        //建構sqlSession的工廠
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //使用MyBatis提供的Resources類加載mybatis的配置檔案(它也加載關聯的映射檔案)
        //Reader reader = Resources.getResourceAsReader(resource); 
        //建構sqlSession的工廠
        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //建立能執行映射檔案中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的辨別字元串,
         * me.gacl.mapping.userMapper是userMapper.xml檔案中mapper标簽的namespace屬性的值,
         * getUser是select标簽的id屬性值,通過select标簽的id屬性值就可以找到要執行的SQL
         */
        String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的辨別字元串
        //執行查詢傳回一個唯一user對象的sql
        User user = session.selectOne(statement, 1);
        System.out.println(user);
    }
}      

這裡我要補充下,是原來作者沒寫的!!!!!!!  因為我是新手嘛~~  我怕有的新手跟我一樣,不知道錯誤在哪裡,特此寫出!!!!!如圖:

一、Mybatis介紹

mapper千萬不要忘記寫啦 !!!!!

代碼如下:

package me.gacl.mapping;

import me.gacl.domain.User;

public interface userMapper {
  public int getUser(User user);

}
      
一、Mybatis介紹