Mybatis簡介和入門

11.png

MyBatis簡介

MyBatis前身是Apache基金會的開源項目iBatis,在2010年該項目脫離Apache基金會,遷移到Google Code,并正式更名為MyBatis。在2013年11月,MyBatis代碼遷移到GitHub

MyBatis是一個優秀的持久層框架,可以幫助開發人員屏蔽底層重復性的原生JDBC代碼。MyBatis采用配置文件或相應注解動態管理SQL語句。

為什么要學習MyBatis?

傳統的數據庫操作技術-JDBC

-- SQL語句嵌在Java代碼里,耦合度高。

-- 實際開發中SQL語句變化頻繁,導致難以維護。

Hibernate框架

-- 內部對SQL語句做了較厚的封裝,難以優化。

-- 不適合大數據量、高并發、低延遲的場景。

MyBatis簡單入門

1. 建立一個Java工程

image

2. 導入相應的jar包和xml文件

image

3. 創建相關數據庫表(以Mysql為例)

image

插入一條數據:

image

4. 創建MyBatis配置文件

image

配置文件內容如下:

<?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> 

5. 創建數據庫表對應的實體類

image

實體類代碼如下:


package com.tzsj.pojo;

public class Employee {
    private Integer id;
    private String empName;
    private String gender;
    private String email;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "Employee [id=" + id + ", empName=" + empName + ", gender=" + gender + ", email=" + email + "]";
    }

}

6. 創建數據庫表對應的映射文件

image

EmployeeMapper.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">

<!-- namespace:名稱空間 -->
<mapper namespace="com.tzsj.mybatis.EmployeeMapper">

<!-- 
    id:唯一標識
    resultType:返回值類型
    #{id}:傳遞的參數
 -->
    <select id="getEmpById" resultType="com.tzsj.pojo.Employee">
        select id, emp_name empName, gender, email from t_employee where id = #{id}
    </select>
</mapper>

7. 在MyBatis配置文件mybatis-config.xml中裝載EmployeeMapper.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>
    <!-- 裝載EmployeeMapper.xml文件 -->
    <mappers>
        <mapper resource="EmployeeMapper.xml" />
    </mappers>
</configuration>

8. 創建測試類進行測試

image

測試類代碼如下:

package com.tzsj.test;

import java.io.IOException;
import java.io.InputStream;
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 org.junit.Test;
import com.tzsj.pojo.Employee;

public class TestMyBatis {

    /**
     *  1. 根據MyBatis配置文件mybatis-config.xml獲取SqlSessionFactory工廠對象
     *  2. 根據sqlSession工廠對象,獲取sqlSession對象來執行增刪改查操作
     *      一個sqlSession就是代表和數據庫的一次會話,用完關閉
     *  3. 使用sql的唯一標志(EmployeeMapper.xml中的namespace值 + 對應的SQL語句id)來告訴MyBatis執行哪個sql
     * 
     */
    @Test
    public void test() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        try {
            Employee employee = session.selectOne("com.tzsj.mybatis.EmployeeMapper.getEmpById", 1);
            System.out.println(employee);
        } finally {
            session.close();
        }
    }

}

9. 進行Junit測試

測試結果如下:

image

原文地址https://blog.csdn.net/plxddyxnmd/article/details/80552071#

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優秀的...
    笨鳥慢飛閱讀 5,590評論 0 4
  • Java數據持久化之mybatis 一. mybatis簡介 1.1 原始的JDBC操作: Java 通過 Jav...
    小Q逛逛閱讀 4,959評論 0 16
  • 恢復滿血復活狀態,發布90天3個小目標 1.馬甲線 2.準備2017年11月份的心理咨詢師證的考試 3.九點領導力...
    小穎姑娘閱讀 208評論 0 1
  • 相比國博,更喜歡首博。了解北京的文化、歷史、民俗等。 第二次來首博了,聽服務臺說有一位老人講北京民俗特別好,老人叫...
    昭聞天下閱讀 395評論 0 1
  • 成功來講,先看清人生看清事,先立志后行事再成功。人生怎么活都是死,還不如轟轟烈烈的活,有點作為有點名的活,最起碼證...
    懂夢想閱讀 173評論 0 0