1. 程式人生 > >Mybatis學習筆記(1)——第一個程式

Mybatis學習筆記(1)——第一個程式

暑期之前就有打算學習SSM,但是我記得當時再配置一個框架瘋狂報錯,弄得我很難受,,再加上當時有點其他事情,所以就放了下來。現在很有需求要會ssm,所以就學了一下。感覺框架這東西配置就煩的要死。錯一丁點就全錯。。下面開始說配置詳情。
這裡寫圖片描述
介紹一下這些東西,將mybatis的jar包依賴放入lib目錄。User類是一個bean物件,test類是一個測試類(就是要用到這個服務的)。conf.xml是全域性配置,配置了資料庫相關資訊和資料庫操作檔案的對映(userMapper等資料庫操作)。userMapper.xml封裝了資料庫操作給test呼叫。
首先,資料庫建立資料庫

1 create
database mybatis;
2 use mybatis; 3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); 4 INSERT INTO users(NAME, age) VALUES('hehe',15 ); //隨便輸入幾條資料

在src目錄下建立對應的user物件:

package com.test.mybits;

public class User {
    private int id;
    private String name;
    private
int age; public User(){} 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; } public String toString() { return "user [id="+id+",name="+name+",age="+age+"]"; } }

這樣bean物件就建好了。
下一步建立conf.xml,這個是一個全域性配置的xml檔案,裡面包含連線資料庫的相關資訊,有個要注意的是要把 < DOCTYPE confi—-/>這個寫在頭。

<?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>
 <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://127.0.0.1:3306/mybits?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
           </dataSource>

     </environment>
   </environments>
</configuration>

這個和普通JDBC連線差不多。
下一步。建立userMapper.xml物件,進行相關配置

<?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="userMapper">
  <!-- 在select標籤中編寫查詢的SQL語句, 設定select標籤的id屬性為getUser,id屬性值必須是唯一的,不能夠重複
      使用parameterType屬性指明查詢時使用的引數型別,resultType屬性指明查詢返回的結果集型別
      resultType="com.test.mybits.User"就表示將查詢結果封裝成一個User類的物件返回
     User類就是users表所對應的實體類
     -->
     <!-- 
         根據id查詢得到一個user物件
      -->
      <select id="getuser"  parameterType="Integer" resultType="com.test.mybits.User">
      select * from users where id=#{id}
      </select>
</mapper>

這裡的id就是讓後面java呼叫的,注意檔案配置名稱和路徑,返回的物件型別。
這個之後就在conf.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>
 <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://127.0.0.1:3306/mybits?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
           </dataSource>

     </environment>
   </environments>
 <mappers>
  <mapper resource="userMapper.xml"/>
 </mappers>
</configuration>

最後編寫test類

package com.test.test1;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

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

import com.test.mybits.User;

public class Test {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        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檔案
        SqlSession session=sessionFactory.openSession();

        String statement="getuser";
        User user=session.selectOne(statement,3);
        System.out.println(user);
        User user2=session.selectOne(statement,1);
        System.out.println(user2);



        //System.out.print(11);
    }
}

執行輸出為:

user [id=3,name=弟弟,age=22]
user [id=1,name=張賽,age=21]

根據個人的資料庫查詢出不同結果。在main函式中,statement對應xml中配置的id。這個只是實現了簡單的查詢功能,後續的增刪該查都是類似模組,就是要注意對映的一一對應和路徑的問題。