mybatis入門基礎詳解

mybatis入門詳解

Mybatis框架簡介
MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAOs)
MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數據庫中的記錄
1.mybatis運行過程
在這裏插入圖片描述
1、 sqlmapconfig.xml文件是mybatis全局配置文件,配置了mybatis運行相關的環境。
2、 mapper.xml 是sql映射文件,文件中主要配置了對數據庫操作的sql語句,文件需要在sqlmapconfig.xml文件在進行載入。
3、 sqlSessionFactory 工廠會話,通過主配置文件中的信息構造出來。
4、 sqlSession 通過會話工廠創建,用來操作數據庫。
5、 mybatis底層自定義了Executor執行器接口操作數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。
6、 Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id即是Mapped statement的id。

  1. 配置開發環境
    2.1添加相關jar包。
    mybaits框架依賴jar包:
    在這裏插入圖片描述
    mybatis-3.2.7.jar —mybatis的核心包
    mybatis-3.2.7.pdf–mybatis使用手冊
    如果您使用Maven,只需將以下依賴項添加到您的pom.xml:
<dependency>
 <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>
<!--以下是mysql數據庫驅動和log4j jar包-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

除了添加Mybatis jar包還需要添加具體數據庫驅動。
2.2 添加mybatis的主配置文件。
此文件作爲mybatis的全局配置文件,配置了mybatis的運行環境等信息。
主配置文件的名稱可以隨意命名的,一般將其命名爲mybatis-config.xml,這裏也將配置文件命名爲mybatis-config.xml,如果創建的是web項目將配置文件房子src目錄下,如果是maven項目放在main/resources目錄下。
web項目:
在這裏插入圖片描述
maven項目:
在這裏插入圖片描述
2.3 mybatis-config.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/mydatabase"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
 	<mappers>
        <!--註冊映射文件-->
        <mapper resource="com/Gorilla1024/dao/UserMapper.xml"/>
    </mappers>
</configuration>

我這裏數據庫配置信息默認爲mysql數據庫,賬號密碼:root 123456 請按照實際情況修改。
2.4 映射文件

<?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="com.Gorilla1024.dao.UserMapper">
    <!--編寫sql語句-->
</mapper>

2.4 創建數據庫
現在創建一個測試的數據庫。
數據庫已經提前創建好了,命名mydatabase 。
現在創建一張用戶信息表,包括用戶ID,密碼,姓名,手機號,性別。

DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `UseId` varchar(20) NOT NULL,
  `usePassword` varchar(20) NOT NULL,
  `UseName` varchar(40) NOT NULL,
  `Phone` varchar(15) NOT NULL,
  `UseSex` varchar(4) NOT NULL,
  PRIMARY KEY (`UseId`)
) ;

2.5 創建對應數據庫的Java對象。
這裏在 com.Gorilla1024.dao包下創建UserInfo;

package com.Gorilla1024.dao;

public class UserInfo {
    private String UseId;
    private String usePassword;
    private String UseName;
    private String Phone;
    private String UseSex;
    
 	public UserInfo(){};
    public UserInfo(String useId, String usePassword, String useName, String phone, String useSex) {
        UseId = useId;
        this.usePassword = usePassword;
        UseName = useName;
        Phone = phone;
        UseSex = useSex;
    }

    public String getUsePassword() {
        return usePassword;
    }

    public void setUsePassword(String usePassword) {
        this.usePassword = usePassword;
    }

    public String getUseName() {
        return UseName;
    }

    public void setUseName(String useName) {
        UseName = useName;
    }

    public String getPhone() {
        return Phone;
    }

    public void setPhone(String phone) {
        Phone = phone;
    }

    public String getUseSex() {
        return UseSex;
    }

    public void setUseSex(String useSex) {
        UseSex = useSex;
    }

    public String getUseId() {
        return UseId;
    }

    public void setUseId(String useId) {
        UseId = useId;
    }
}

3 mybatis實現簡單的CRUD

3.1 插入信息。
先編寫sqlmapper.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="com.Gorilla1024.dao.UserMapper">
   <insert id="insertUser" parameterType="com.Gorilla1024.dao.UserInfo">
        insert  into UserInfo values (#{UseId},#{usePassword},#{UseName},#{Phone},#{UseSex})
    </insert>
</mapper>
</mapper>

id 是唯一標識這個sql映射,在同一個命名空間中保持唯一。
parameterType 是作爲輸入參數類別配置,mybatis會自動將傳入參數對象一一配對賦值給#{xxx} 保持xxx於參數對象內的變量名相同。(可以省略不寫)。

測試代碼

    public void test2(){
        SqlSession sqlsession=null;
        UserInfo userinfo=new UserInfo("1","123456","Gorilla1024","18143375977","男");
        try {
          	//加載核心文件
            InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
            //創建sqlSessionFactory
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //創建會話
            sqlsession= sqlSessionFactory.openSession();
            //執行sql語句  一個參數爲sqlmapper文件中的ID,第二個爲創建的user對象。
            sqlsession.insert("insertUser",userinfo);
            //提交事務,不提交數據庫不會發生改變。
            sqlsession.commit();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

結果
在這裏插入圖片描述
3.2 查詢信息
添加sql映射。

  <select id="selectUser" resultType=""com.Gorilla1024.dao.UserInfo" >
       SELECT *  FROM UserInfo;
    </select>

resultType 設置查詢結果集類型,結果集會對應到UserInfo對象。

測試代碼

    public void test2(){
        SqlSession sqlsession=null;
            List<UserInfo> list=new ArrayList<UserInfo>();
        try {
          	//加載核心文件
            InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
            //創建sqlSessionFactory
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //創建會話
            sqlsession= sqlSessionFactory.openSession();
            //執行sql語句  一個參數爲sqlmapper文件中的ID,第二個爲創建的user對象,將結果賦值給UserInfo對象的集合。
              list= sqlsession.selectList("selectUser");          
              System.out.println(list);
            //提交事務,不提交數據庫不會發生改變。
            sqlsession.commit();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

結果
在這裏插入圖片描述

更新,刪除類似,這裏就省略掉了。
如有錯誤歡迎指出,謝謝閱讀。

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