文章內(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所示:

導(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ā)人員帶來了很大的便利。那么在文章的末尾給大家留下一個問題????





