1. 程式人生 > >mybatis入門學習,mybatis環境搭建

mybatis入門學習,mybatis環境搭建

這是我的第一篇部落格,哈哈,謝謝大家捧場,由於實習需要mybatis框架,所以自己也從零開始寫了一個demo,(當然也參考了很多前輩的部落格)希望能夠幫到想要入門的童鞋。

1. 開發環境

1.1.建立工程
建立一個工程,Java工程或者web工程都是可以的我的專案是web專案因為剛練習完springmvc所以名字沒有改

1.2 當然是匯入必需的jar包了,這裡需要MySQL的驅動包和mybatis的包

jar包放在WEB-INF裡的lib中

1.3 建立資料庫和表,我用的是MySQL資料庫

create DATABASE mybatis CHARACTER SET utf8;
use mybatis ;
create table users(id INT
PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('程式設計師大白', 20); INSERT INTO users(NAME, age) VALUES('程式設計師小白', 18);

建完之後的效果是:
資料庫中的表

2. 使用mybatis查表

2.1新增Mybatis的配置檔案conf.xml
在src目錄下建立一個conf.xml檔案,如下圖所示:

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://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> </configuration>

2.2 定義表對應的實體類
Users

Users類的程式碼:

public class Users {

    //實體類的屬性和表的欄位名稱一一對應
    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 "Users{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

2.3定義操作users表的sql對映檔案userMapper.xml

建立一個me.gacl.mapping包,專門用於存放sql對映檔案,在包中建立一個userMapper.xml檔案:

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,namespace的值習慣上設定成包名+sql對映檔名,這樣就能夠保證namespace的值是唯一的
例如namespace="edu.neuq.rxm.mapping.userMapper"就是edu.neuq.rxm.mapping(包名)+userMapper(userMapper.xml檔案去除字尾)
 -->
<mapper namespace="edu.neuq.rxm.mapping.userMapper">
    <!-- 在select標籤中編寫查詢的SQL語句, 設定select標籤的id屬性為getUser,id屬性值必須是唯一的,不能夠重複
    使用parameterType屬性指明查詢時使用的引數型別,resultType屬性指明查詢返回的結果集型別
    resultType="edu.neuq.rxm.domain.Users"就表示將查詢結果封裝成一個User類的物件返回
    User類就是users表所對應的實體類
    -->
    <!--
        根據id查詢得到一個user物件
     -->
    <select id="getUser" parameterType="int"
            resultType="edu.neuq.rxm.domain.Users">
        select * from users where id=#{id}
    </select>
</mapper>

2.4 在conf.xml檔案中註冊userMapper.xml檔案(這裡的conf.xml還是上面的conf.xml檔案,只不過在最下面註冊了userMapper.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://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 註冊userMapper.xml檔案,
        userMapper.xml位於edu/neuq/rxm/mapping/userMapper.xml這個包下,所以resource寫成edu/neuq/rxm/mapping/userMapper.xml-->
        <mapper resource="edu/neuq/rxm/mapping/userMapper.xml"/>
    </mappers>
</configuration>

2.5 編寫測試程式碼:執行定義的select語句 。建立一個Test1類,編寫如下的測試程式碼:

package edu.neuq.rxm.mybatisTest;

import edu.neuq.rxm.domain.Users;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class Test1 {
    public static  void  main(String[] args){

        //mybatis的配置檔案
        String resource ="conf.xml";
        //使用類載入器載入mybatis的配置檔案(它也載入關聯的對映檔案)
        InputStream inputStream=Test1.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession=sessionFactory.openSession();
        /**
         * 對映sql的標識字串,
         * edu.neuq.rxm.mapping.userMapper是userMapper.xml檔案中mapper標籤的namespace屬性的值,
         * getUser是select標籤的id屬性值,通過select標籤的id屬性值就可以找到要執行的SQL
         */
        String statement="edu.neuq.rxm.mapping.userMapper.getUser";

        //執行查詢返回一個唯一user物件的sql
        Users users=sqlSession.selectOne(statement,1);
        System.out.println(users);
    }


}

好了,執行測試類,下面是執行結果,可以看到已經從資料庫中查出來資料了!
程式設計師大白

到此,一個入門的demo就寫完了,當然了這只是針對從來沒有接觸過mybatis的童鞋來做個入門的引導,先讓程式在自己的電腦上跑通,配置檔案確實是比較麻煩,肯定有更簡潔的方法,但是先按部就班的把程式跑通,然後再考慮更加優化的方法。