Mybatis之環(huán)境搭建(使用級別)

文章內(nèi)容輸出來源: 拉勾教育java高薪訓(xùn)練營

初識拉勾

拉勾作為專業(yè)的招聘平臺我們大家都知道,特別是在北上廣深這樣的大城市,拉勾的知名度真的很高。本以為拉勾只有招聘的領(lǐng)域,沒想到拉勾還有更神奇的一面?!独唇逃?/p>

結(jié)緣拉勾

在N年前的某一天我打開了拉勾的APP,正在無聊時發(fā)現(xiàn)了拉勾的學(xué)習(xí)平臺,里面有好多的免費的課程,還有一些1元課程搶購等... 開始還沒在意,只是抱著試試看的心跳選擇了一門課程,讓我沒想到的是里面的內(nèi)容竟然這么專業(yè),不但講解細(xì)致,就連問題都剖析的很完整。從這以后俺就對拉勾產(chǎn)生了濃厚的興趣。

加入拉勾

就在我內(nèi)心產(chǎn)生了一些想法的時候,感到迷茫的時候,手機(jī)突然響了,而且并沒有顯示廣告推銷等類似的騷擾電話,我嘗試的接了起來,里面?zhèn)鱽砹颂鹛鸬男〗憬愕穆曇?,自我介紹說是拉勾教育的老師。我認(rèn)真的聽了她的介紹并且加了微信,通過微信的溝通讓我知道了《JAVA高薪訓(xùn)練營》的課程,并且耐心細(xì)致的解答了我所有的迷惑。我看到了課程的大綱,很吸引我。并且拉勾小姐姐在得知我經(jīng)濟(jì)困難的時候特意提醒我現(xiàn)在有活動,就是這樣,我加入了《拉勾教育JAVA高薪訓(xùn)練營》,這也是我在拉勾學(xué)習(xí)的課程之一,我受益很深,自我提升了等級lv1-lvn。感謝拉勾。

Mybatis簡介

Mybatis是一款優(yōu)秀的基于ORM的半自動輕量級持久層框架,它支持定制化SQL、存儲過程以及高級映射。Mybatis規(guī)避了幾乎所有的JDBC代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集出現(xiàn)的問題。Mybatis可以使用XML或者注解來配置和映射原生類、接口和java的POJO。Mybaties同時支持自定義插件和第三方插件,用于增強(qiáng)某些方法的能力。

Mybatis優(yōu)勢

Mybatis是一個半自動化的持久層框架,對于開發(fā)人員而言我們可以自行的編寫sql,并且可以針對sql進(jìn)行優(yōu)化。你的業(yè)務(wù)邏輯和SQL分工合作,邊界清晰,各司其職。

Mybatis開發(fā)步驟

mybatis作為半自動的持久層框架,為我們提供了多種的配置方式,可以使用XML或者注解進(jìn)行配置。下面我們來簡單回顧下使用mybaties開發(fā)基于XML的配置形式的步驟:

(1)導(dǎo)入mybatis依賴

(2)創(chuàng)建數(shù)據(jù)庫映射表

(3)編寫POJO映射實體類

(4)編寫Mybatis核心配置文件:sqlMapConfig.xml

(5)編寫編寫Mapper映射文件:mapper.xml

(6)編寫Junit單元測試

Mybatis環(huán)境搭建

看了上面的簡單介紹,相信大家已經(jīng)對mybaties有了一定的了解,同時也相信大家對mybatis產(chǎn)生了濃厚的興趣。作為開發(fā)人的一直致力于分享自己的心得,經(jīng)驗。希望幫助大家進(jìn)行快速入門。(廢話不多說,直接上干貨)

IDEA新建maven工程

1、打開IDEA工具,選擇Create New Project,如圖1所示:


圖1

2、選擇工程JDK版本,選擇maven項目,點擊下一步進(jìn)行新建項目,如圖2所示


圖2

3、點擊下一步進(jìn)入到當(dāng)前配置頁面,按需進(jìn)行內(nèi)容信息編輯,點擊完成,如圖3所示:
圖3

導(dǎo)入mybatis坐標(biāo)

按照上文介紹的mybaties開發(fā)步驟,我們可以知道第一步先配置mybaties坐標(biāo),大家回想傳統(tǒng)的JDBC開發(fā)步驟,可以知道還需要進(jìn)行mysql數(shù)據(jù)驅(qū)動的坐標(biāo)引入。當(dāng)然針對不同的數(shù)據(jù)庫需要用到不同的數(shù)據(jù)庫驅(qū)動。本文以MySQL為列,為了測試方便,我們還需引入Junit測試包。需要引入的坐標(biāo)如下文:

 <!--  指定工程的編碼方式以及運行環(huán)境的JDK的編譯版本  -->
 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--  添加mybatis依賴  -->
<dependencies>
    <!--  導(dǎo)入mybatis坐標(biāo)  -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>
    <!-- 導(dǎo)入mybatis驅(qū)動坐標(biāo) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
        <scope>runtime</scope>
    </dependency>
    <!-- 單元測試坐標(biāo) -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

創(chuàng)建數(shù)據(jù)庫映射表和映射實體類User

1、由于數(shù)據(jù)庫映射表的創(chuàng)建比較簡單,這里就不做過多的演示,需要注意的是映射實體類需要和數(shù)據(jù)庫表中的字段名稱要保持一致。這樣mybaties在進(jìn)行結(jié)果集的封裝的時候才會將獲取的值賦值給你對應(yīng)的字段上,如圖4所示:


圖4

2、下面我們將創(chuàng)建對應(yīng)的映射實體類POJO :User實體,再次強(qiáng)調(diào)一下在初次使用mybatis時還是盡量要保持實體類和數(shù)據(jù)表映射字段名稱保持一致。雖然不一致可以通過配置進(jìn)行映射,但是本文將介紹相同的字段名稱。請大家注意。具體的User實體類創(chuàng)建,如圖5所示:
圖5

編寫MyBaties核心配置文件

配置Mybaties核心配置文件需要注意需要添加 <environments>標(biāo)簽以及指定數(shù)據(jù)源配置信息,用過MyBaties的小伙伴都知道m(xù)ybaties核心配置文件中需要加載mapp映射文件,具體配置如下:

  <?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="dev">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!-- 配置數(shù)據(jù)源信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///lgTest"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
             </dataSource>
        </environment>
    </environments>
</configuration>
    <!-- 引入mapper映射文件 -->
    <!-- 這個地方存在不同的引用方式 -->
    <mappers>
        <!-- 采用mapper標(biāo)簽進(jìn)行引入 里面包含resource  class url等不同的引入方式 -->
        <!-- <mapper resource="com.lagou.mapper/UserMapper.xml" />-->
        <!-- 采用掃描包的形式來進(jìn)行引入  通常采用這種方法進(jìn)行配置 -->
        <package name="com.lagou.mapper"/>
    </mappers>

編寫UserMapper映射文件以及UserMapper接口

1、編寫UserMapper接口,如圖6所示:


圖6

2、編寫UserMapper映射文件

<?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.lagou.mapper.UserMapper">
    <select id="findAll" resultType="com.lagou.pojo.User">
    select * from User
  </select>
</mapper>

UserMapper.xml


usermapper2.png

編寫測試類

package com.lagou.mapper;

import com.lagou.pojo.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;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserMapperTest {
    @Test
    public void findAll() throws IOException {
        // 將核心配置文件讀取成字節(jié)輸入流存到內(nèi)存中
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        // 解析mybaties核心配置文件,并生成sqlSessionFactory,采用構(gòu)建者模式
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        // 通過sqlSessionFactory生成sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 調(diào)用sqlSession的mapper方法獲取UserMapper的代理對象(采用jdk動態(tài)代理)
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.findAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

tip:在測試的過程中可能會出現(xiàn)幾個異常

1、綁定參數(shù)異常 Invalid bound statement (not found): com.lagou.mapper.UserMapper.findAll
   解決思路:(1)檢查映射配置文件與映射接口名稱是否一致 (2)檢查映射配置文件與映射接口是否在同一包下
2、提示需要升級依賴異常com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server;
  解決思路:(1)升級數(shù)據(jù)庫驅(qū)動依賴

以上內(nèi)容就是我們使用Mybaties框架進(jìn)行開發(fā)的基本流程,程序中需要注意在配置mybaties核心文件,以及mapp映射文件、mapper接口的編寫等問題。mybaties是我們經(jīng)常使用的一款開源的半自動的持久層框架,他為我們開發(fā)人員帶來了很大的便利。那么在文章的末尾給大家留下一個問題????

持久層框架除了mybaties還有哪些?它們有什么不一樣的地方?歡迎大家進(jìn)行留言討論?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容