MyBatis 入門

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲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 Java Objects,普通的Java對象)映射成數據庫中的記錄。

二、mybatis快速入門

2.1、準備開發環境

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

  

2、添加相應的jar包

  【mybatis】

         mybatis-3.1.1.jar

  【MYSQL驅動包】
    mysql-connector-java-5.1.7-bin.jar

   

3、創建數據庫和表,針對MySQL數據庫

  SQL腳本如下:

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

  將SQL腳本在MySQL數據庫中執行,完成創建數據庫和表的操作,如下:

  

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

2.2、使用MyBatis查詢表中的數據

  1、添加Mybatis的配置文件conf.xml

  在src目錄下創建一個conf.xml文件,如下圖所示:

  

  conf.xml文件中的內容如下:

<?xml version="." encoding="UTF-"?>
 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd">
 <configuration>
   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC" />
       <!-- 配置數據庫連接信息 -->
       <dataSource type="POOLED">
         <property name="driver" value="com.mysql.jdbc.Driver" />
         <property name="url" value="jdbc:mysql://localhost:/mybatis" />
         <property name="username" value="root" />
         <property name="password" value="XDP" />
       </dataSource>
     </environment>
   </environments>
   
 </configuration>

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

  

  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文件,如下圖所示:

  

  userMapper.xml文件的內容如下:

 <?xml version="." encoding="UTF-" ?>
  <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" "http://mybatis.org/dtd/mybatis--mapper.dtd">

<!-- 爲這個mapper指定一個唯一的namespace,namespace的值習慣上設置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的

  例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除後綴)

-->
  <mapper namespace="me.gacl.mapping.userMapper">
      <!-- 在select標籤中編寫查詢的SQL語句, 設置select標籤的id屬性爲getUser,id屬性值必須是唯一的,不能夠重複
      使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型
      resultType="me.gacl.domain.User"就表示將查詢結果封裝成一個User類的對象返回
     User類就是users表所對應的實體類
     -->

     <!-- 
         根據id查詢得到一個user對象
      -->

  <select id="getUser" parameterType="int" 
     resultType="me.gacl.domain.User">
     select * from users where id=#{id}
   </select>
 </mapper>

  4、在conf.xml文件中註冊userMapper.xml文件

 

 <?xml version="." encoding="UTF-"?>
 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd">
 <configuration>
   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC" />
       <!-- 配置數據庫連接信息 -->
       <dataSource type="POOLED">
         <property name="driver" value="com.mysql.jdbc.Driver" />
         <property name="url" value="jdbc:mysql://localhost:/mybatis" />
         <property name="username" value="root" />
         <property name="password" value="XDP" />
       </dataSource>
     </environment>
   </environments>
   
   <mappers>
     <!-- 註冊userMapper.xml文件, 
     userMapper.xml位於me.gacl.mapping這個包下,所以resource寫成me/gacl/mapping/userMapper.xml-->
     <mapper resource="me/gacl/mapping/userMapper.xml"/>
   </mappers>
   
 </configuration>

  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 Test {
  public static void main(String[] args) throws IOException {
    //mybatis的配置文件
    String resource = "conf.xml";
    //使用類加載器加載mybatis的配置文件(它也加載關聯的映射文件)
    InputStream is = Test.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, );
    System.out.println(user);
  }
}

  執行結果如下:

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章