Java的MyBatis快速入門和實戰(zhàn)詳解
1.什么是MyBatis?

簡單來說,MyBatis是一款優(yōu)秀的持久層框架,用于簡化JDBC開發(fā)。MyBatis本身是Apache的一個開源項目,期初叫做iBatis,2010年這個項目前移到google code,并改名為MyBatista。在2013年該項目遷移到GitHub。
概念中的持久層怎么理解?指將數(shù)據(jù)保存到數(shù)據(jù)庫的那一層代碼。在海量的代碼中,為了保證每一塊代碼的職責單一,把同數(shù)據(jù)庫操作的代碼叫做持久層。同時,JavaEE三層架構(gòu)中,表現(xiàn)層負責頁面的展示,業(yè)務(wù)層負責邏輯的處理,而持久層就是負責將數(shù)據(jù)存儲到數(shù)據(jù)庫中。
什么是框架?框架是指一個半成品的軟件,是一套可重用的,通用的,軟件基礎(chǔ)代碼模型,同時,在框架基礎(chǔ)之上進行開發(fā)大量的節(jié)省了成本,而且更加的規(guī)范,通用且擴展性較強。
2. JDBC存在的缺點
既然我們使用MyBatis來簡化JDBC開發(fā),那么JDBC究竟存在什么缺點呢?
硬編碼
首先在注冊驅(qū)動,獲取鏈接的時候,字符串信息如果發(fā)生變動,例如密碼,此時需要手動修改。其次,在定義sql語句時候,使用字符串同樣使得代碼的維護性變差。
操作繁瑣
當我們手動設(shè)置參數(shù)和手動設(shè)置結(jié)果集時,存在著操作繁瑣的問題。
下面JDBC使用的一段代碼做展示:

3.Mybatis簡化JDBC開發(fā)
既然JDBC開發(fā)存在硬編碼,操作繁瑣的缺點,那么怎么解決這些問題呢?首先我們把字符串寫到單獨的配置文件中,解決JDBC硬編碼的問題,其次,可以采用一種方法來自動完成JDBC操作繁瑣的代碼。于是,我們使用MyBatis來簡化JDBC開發(fā)。MyBatis免除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。
例如:在配置文件中寫入?yún)?shù)信息,將來使用時直接讀取,解決硬編碼的問題
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--數(shù)據(jù)庫連接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>市面上的持久層框架有很多的選擇,但是MyBatis在國內(nèi)市場有很大的使用占比。
4.MyBatis快速入門|實戰(zhàn)項目詳解
我們通過實踐操作快速查詢user表中所有的數(shù)據(jù)來入門MyBatis,即查詢user表中的數(shù)據(jù),放到user對象里,在分別把對方放入集合中完成操作。通過以下步驟來完成操作:
- 創(chuàng)建user表,添加數(shù)據(jù)
- 創(chuàng)建模塊,導(dǎo)入坐標
- 編寫MyBatis 核心配置文件,替換連接信息來解決硬編碼的問題
- 編寫SQL映射文件,統(tǒng)一管理sql語句,解決編碼問題
- 編寫代碼
在編寫代碼是使用以下步驟:
- 定義POJO類
- 加載核心配置文件,獲取sqlSessionFactory對象
- 獲取sqlSession對象,執(zhí)行sql語句
- 釋放資源
整體的項目結(jié)構(gòu)展示:

下面演示通過詳細的演示,快速入門MyBatis:
創(chuàng)建user表,添加數(shù)據(jù):
create database mybatis; use mybatis; drop table if exists tb_user; create table tb_user( id int primary key auto_increment, username varchar(20), password varchar(20), gender char(1), addr varchar(30) ); INSERT INTO tb_user VALUES (1, '小張', 'abc', '男', '北京'); INSERT INTO tb_user VALUES (2, '小李', '123', '女', '天津'); INSERT INTO tb_user VALUES (3, '小美', '456', '女', '上海');

這里使用的是MySQL數(shù)據(jù)庫,使用navicat作為數(shù)據(jù)庫的可視化工具。
在idea中創(chuàng)建模塊,導(dǎo)入坐標:
在idea中點擊新建項目,構(gòu)建系統(tǒng)選擇Maven,輸入項目名稱(這里使用MyBatis-demo),設(shè)置組ID和工件ID,點擊創(chuàng)建。接下來導(dǎo)入的依賴,將下面的依賴代碼置于 pom.xml 文件中:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version> </dependency>
接下來導(dǎo)入mysql依賴,junit坐標和logback坐標,把logback.xml配置文件粘貼到resources中:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!-- 添加slf4j日志api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.20</version>
</dependency>
<!-- 添加logback-classic依賴 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 添加logback-core依賴 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>編寫MyBatis 核心配置文件:
在MyBatis-demo/src/main/resources中新建配置文件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">
<!--數(shù)據(jù)庫連接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="abc123"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加載sql的映射文件-->
<mapper resource="UerMapper.xml"/>
</mappers>
</configuration>編寫SQL映射文件:
在MyBatis-demo/src/main/resources中添加sql的映射文件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="test">
<select id="selectAll" resultType="com.example.pojo.User">
select * from tb_user;
</select>
</mapper>修改MyBatis的核心配置文件,用于加載sql的映射文件。
<mappers>
<!--加載sql的映射文件-->
<mapper resource="UserMapper.xml"/>
</mappers>完成以上操作就可以進行編碼了,首先要定義POJO類:
package com.example.pojo;
public class User {
private Integer id;
private String username;
private String password;
private String gender;
private String addr;
public Integer getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getGender() {
return gender;
}
public String getAddr() {
return addr;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", gender='" + gender + '\'' +
", addr='" + addr + '\'' +
'}';
}
}加載核心配置文件,獲取sqlSessionFactory對象:
首先需要創(chuàng)建一個MyBatisDemo.java文件,添加一個主方法,編寫代碼。
public class MyBatisDemo {
public static void main(String[] args) throws IOException {
//加載MyBatis核心配置文件
String resource = "mybatis.config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
}獲取sqlSession對象,執(zhí)行sql語句:
//獲取SqlSession對象,用它來執(zhí)行sql
SqlSession sqlSession=sqlSessionFactory.openSession();
//執(zhí)行sql
List<User> users = sqlSession.selectList("test.selectALL");
System.out.println(users);
//釋放資源
sqlSession.close();到這里我們就完成了整個項目的構(gòu)建,接下來我們運行程序,可以看到,我們成功的查詢到tb_user中的數(shù)據(jù)!

到此這篇關(guān)于Java的MyBatis快速入門和實戰(zhàn)詳解的文章就介紹到這了,更多相關(guān)MyBatis快速入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA OutputStreamWriter流的實現(xiàn)
OutputStreamWriter是從字符流到字節(jié)流的橋接,它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集,本文詳細的介紹了JAVA OutputStreamWriter流的使用,感興趣的可以了解一下2021-06-06

