MyBatis研習錄(01)——MyBatis概述與入門
講給Android程式設計師看的前端系列教程(40集免費視訊教程+原始碼)
版權宣告
- 本文原創作者:谷哥的小弟
- 作者部落格地址:http://blog.csdn.net/lfdfhl
ORM模型
簡單地說,ORM模型就是資料庫的表與簡單Java物件(Plain Ordinary Java Object,簡稱 POJO)的物件關係對映模型(Object Relational Mapping 簡稱ORM),它主要解決資料庫資料和POJO物件的相互對映。在本系列教程中,我們將詳細介紹輕量級的ORM框架MyBatis。
MyBatis概述
MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis原本是apache的一個開源專案iBatis, 2010年該專案由apache software foundation 遷移到了google code並改名為MyBatis 。2013年11月MyBatis又遷移到Github。
The MyBatis SQL mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. Simplicity is the biggest advantage of the MyBatis data mapper over object relational mapping tools.
MyBatis對JDBC運算元據庫的過程進行了封裝,使開發者只需要關注SQL本身,而不需要開發人員花費大量的精力去處理例如註冊驅動、建立connection、建立statement、手動設定引數等JDBC操作。之前,當我們使用JDBC持久化的時候,sql語句被硬編碼到java程式碼中,耦合度太高程式碼不易於維護;一旦我們修改了Java程式碼就需要對專案進行重新的編譯、打包、釋出。MyBatis將sql語句和java程式碼分開,功能邊界清晰;前者專注於資料,後者側重於業務。
MyBatis入門示例
在此,我們以示例的形式介紹MyBatis的入門示例,詳細步驟如下:
第一步:資料準備
建立資料庫mybatisDatabase和表user
DROP DATABASE IF EXISTS mybatisDatabase;
CREATE DATABASE mybatisDatabase;
use mybatisDatabase;
CREATE TABLE user(
id INT primary key auto_increment,
username VARCHAR(50),
password VARCHAR(50),
gender VARCHAR(10)
);
INSERT INTO user(username,password,gender) VALUES("lucy","123456","female");
INSERT INTO user(username,password,gender) VALUES("momo","234567","female");
INSERT INTO user(username,password,gender) VALUES("xixi","345678","female");
INSERT INTO user(username,password,gender) VALUES("pepe","456123","female");
SELECT * FROM user;
第二步:建立Java專案
建立普通Java專案並在該專案下新建config和lib資料夾
建立檔案完畢後請對config執行Build Path,圖示如下:
第三步:User
請在cn.com.pojo建立User類
package cn.com.pojo;
public class User {
private int id;
private String username;
private String password;
private String gender;
public User() {
}
public User(int id, String username, String password, String gender) {
this.id = id;
this.username = username;
this.password = password;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", gender=" + gender + "]";
}
}
該User類中各屬性值與user表儘量保持一致。
第四步:新增jar包
請新增以下jar包並Build Path
- log4j-1.2.17.jar
- mybatis-3.4.1.jar
- mysql-connector-java-5.1.7-bin.jar
第五步:log4j.properties
請在config資料夾中建立log4j.properties並編寫其配置,內容如下:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
第六步:mybatis-config.xml
在config資料夾中建立mybatis的核心配置檔案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://localhost:3306/mybatisDatabase"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
該配置檔案environments標籤主要用於配置資料庫相關資訊。至於,mybatis-config.xml檔案中的其它常用配置,我們在後續的教程中會提到。
第七步:UserMapper.xml
在User的同級目錄中建立對映檔案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="cn.com.pojo.User">
<select id="selectUserById" parameterType="int" resultType="cn.com.pojo.User">
select id,username,password,gender from user where id = #{id}
</select>
</mapper>
該mapper的核心功能為:從資料庫中查詢資料並將查詢結果封裝成JavaBean物件。
在該配置檔案中:
- namespace表示該mapper的名稱空間,其取值為JavaBean的全類名或Mapper介面的全類名
- select標籤表示select語句。其中,id屬性用於為sql語句配置唯一標識;parameterType屬性用於表示輸入引數的型別,一般來說可以省略該屬性,但是,如果引數是pojo建議不省略;resultType屬性用於指定執行select查詢語句之後每行記錄對應的JavaBean物件的全類名。
- 在mapper.xml中使用#{ }表示佔位符,類似於JDBC中的佔位符?
在完成UserMapper.xml的編寫後,再在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://localhost:3306/mybatisDatabase"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 配置mapper -->
<mappers>
<mapper resource="cn/com/pojo/UserMapper.xml"/>
</mappers>
</configuration>
通過mappers標籤配置各mapper。在mapper標籤中使用resource屬性指定mapper的路徑,其形式為斜槓形式的全路徑。
第八步:測試
程式碼如下:
package cn.com.test;
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 cn.com.pojo.User;
/**
* 本文作者:谷哥的小弟
* 部落格地址:http://blog.csdn.net/lfdfhl
*/
public class MybatisTest {
@Test
public void testMybatis() {
SqlSession sqlSession = null;
try {
// 讀取mybatis的核心配置檔案mybatis-config.xml
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 建立SqlSessionFactoryBuilder物件
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 通過SqlSessionFactoryBuilder解析配置檔案獲取sqlSessionFactory物件
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
// 通過SqlSessionFactory物件建立SqlSession物件
sqlSession = sqlSessionFactory.openSession();
// 利用selectOne()執行查詢
User user = sqlSession.selectOne("cn.com.pojo.User.selectUserById", 1);
System.out.println(user);
} catch (Exception e) {
} finally {
// 關閉SqlSession
if (sqlSession != null) {
sqlSession.close();
}
}
}
}
要點概述:
- 1、通過org.apache.ibatis.io.Resources讀取mybatis的核心配置檔案mybatis-config.xml
- 2、通過SqlSessionFactoryBuilder物件生成sqlSessionFactory物件
- 3、通過SqlSessionFactory物件建立SqlSession物件。該物件的作用類似於JDBC中的Connection物件,所以在執行完資料庫操作後需對其進行關閉操作。
- 4、通過SqlSession的selectOne( )方法執行返回結果只有一條記錄的sql查詢語句。該方法第一個引數將要執行的sql語句,其格式為:名稱空間.sql語句的id值;該方法第二引數為替換sql語句中佔位符的引數值。
- 5、執行完查詢操作後關閉SqlSession。
結果如下:
MyBatis入門示例總結
- 1、mybatis-config.xml是mybatis的核心配置檔案
- 2、mapper.xml用於定義與資料庫相關的sql語句
- 3、SqlSession用於執行資料庫操作
Eclipse中關聯MyBatis原始碼
為在開發過程中便捷檢視MyBatis原始碼,我們需要在Eclipse對其進行關聯。
第一步
下載原始碼並存放至本地,圖示如下:
第二步
在Eclipse的專案中找到mybatis-3.4.1.jar,圖示如下:
第三步
選中mybatis-3.4.1.jar右鍵選擇Properties後再新增剛才下載好的原始碼檔案mybatis-3.4.1-src.zip,圖示如下:
最後,單擊 Apply and Close即可。
相關文章
- day01-Mybatis介紹與入門MyBatis
- mybatis入門學習MyBatis
- 【Mybatis】Mybatis快速入門MyBatis
- MyBatis(二)MyBatis入門程式(MyBatis demo)MyBatis
- Mybatis框架 入門學習MyBatis框架
- MyBatis系列(一):MyBatis入門MyBatis
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- MyBatis 入門MyBatis
- Mybatis入門MyBatis
- Mybatis學習01:利用mybatis查詢資料庫MyBatis資料庫
- MyBatis(一) 入門MyBatis
- mybatis快速入門MyBatis
- mybatis入門程式MyBatis
- mybatis學習與踩坑記錄MyBatis
- Mybatis入門及第一個Mybatis程式MyBatis
- MyBatis -01- 初識 MyBatis + MyBatis 環境搭建MyBatis
- Mybatis學習記錄MyBatis
- Mybatis 入門介紹MyBatis
- Mybatis極速入門MyBatis
- MyBatis--快速入門MyBatis
- mybatis與spring整合ssm01MyBatisSpringSSM
- [轉載] 快速學習-Mybatis框架概述MyBatis框架
- 深入淺出Mybatis原始碼系列(一)---Mybatis入門MyBatis原始碼
- MyBatis入門——瞭解配置MyBatis
- 30分鐘入門MyBatisMyBatis
- mybatis plus的學習記錄MyBatis
- MyBatis 框架之快速入門程式MyBatis框架
- Mybatis-Plus入門實踐MyBatis
- Java持久層框架Mybatis入門Java框架MyBatis
- MyBatis-Plus筆記(入門)MyBatis筆記
- MyBatis記錄MyBatis
- mybatis 記錄MyBatis
- Hibernate基於Maven入門例項,與MyBatis比對MavenMyBatis
- MyBatis從入門到精通(五):MyBatis 註解方式的基本用法MyBatis
- MyBatis入門——瞭解基本概念MyBatis
- SpringBoot+MySQL+MyBatis的入門教程Spring BootMySqlMyBatis
- SpringBoot + Mybatis + Redis 整合入門專案Spring BootMyBatisRedis
- SpringBoot2.x入門:使用MyBatisSpring BootMyBatis