Mybatis框架 入門學習
目錄
Mybatis框架簡介
框架介紹
什麼是框架,為什麼使⽤框架,框架優點 ?
框架( framework )是⼀個基本概念上的結構,⽤於去解決或者處理複雜的問題。
框架,即framework。其實就是某種應⽤的半成品,就是⼀組元件,供你選⽤完成你⾃⼰的系統。簡單說就是使⽤別⼈搭好的舞臺,你來做表演。 框架是在特定的領域內解決問題。
優點 :
1). 重⽤程式碼⼤⼤增加,軟體⽣產效率和質量也得到了提⾼。
2). 使⽤框架開發,它提供統⼀的標準,⼤⼤降低了我們的後期維護。
java 開發中常⽤框架 :
1). springmvc spring mybatis(ibatis) -- SSM
2). SpringData SpringBoot SpringCloud
SSM框架在JavaEE開發中所處的位置:
原始JDBC操作查詢
-
@Test
-
public void testQuery(){
-
Connection connection = null;
-
PreparedStatement preparedStatement = null;
-
ResultSet resultSet = null;
-
try {
-
//載入資料庫驅動
-
Class.forName("com.mysql.cj.jdbc.Driver");
-
//通過驅動管理類獲取資料庫連結
-
connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/test_wensong","root", "root");
-
//定義sql語句 ? 表示佔位符
-
String sql = " select * from user where username = ?";
-
//獲取預處理statement
-
preparedStatement = connection.prepareStatement(sql);
-
//設定引數,第⼀個引數為sql語句中引數的序號(從1開始),第⼆個引數為設定的引數值
-
preparedStatement.setString(1, "Tom");
-
//向資料庫發出sql執⾏查詢,查詢出結果集
-
resultSet = preparedStatement.executeQuery();
-
List<User> userList = new ArrayList<User>();
-
//遍歷查詢結果集
-
while(resultSet.next()){
-
User user = new User();
-
user.setId(resultSet.getInteger("id"));
-
user.setUsername(resultSet.getString("username"))
-
user.setSex(resultSet.getString("sex"));
-
user.setAddress(resultSet.getString("address"));
-
userList.add(user);
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}finally{
-
//釋放資源
-
if(resultSet!=null){
-
try {
-
resultSet.close();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
if(preparedStatement!=null){
-
try {
-
preparedStatement.close();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
if(connection!=null){
-
try {
-
connection.close();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
}
原始JDBC操作問題分析
原始 jdbc 開發存在的問題如下:
① . 資料庫連線建立、釋放頻繁造成系統資源浪費從⽽影響系統效能 。
② . sql 語句在程式碼中硬編碼,造成程式碼不易維護,實際應⽤ sql 變化的可能較⼤, sql 變動需要改變 java 程式碼 。
③ . 查詢操作時需要⼿動將結果集中的資料⼿動封裝到實體中。插⼊操作時需要⼿動將實體的資料設定到 sql 語句的佔位符位置 。
應對上述問題給出的解決⽅案:
① . 使⽤資料庫連線池初始化連線資源 。
② . 將 sql 語句抽取到 xml 配置⽂件中 。
③ . 使⽤反射等底層技術,⾃動將實體與表進⾏屬性與欄位的⾃動對映 。
Mybatis框架介紹
mybatis 是⼀個優秀的基於 java 的持久層框架,它內部封裝了 jdbc ,使開發者只需要關注 sql語句本身,⽽不需要花費精⼒去處理載入驅動、建立連線、建立 statement 等繁雜的過程 。
mybatis 通過 xml 或註解的⽅式將要執⾏的各種 statement 配置起來,並通過 java 物件和 statement 中sql 的動態引數進⾏對映⽣成最終執⾏的 sql 語句 。
最後 mybatis 框架執⾏ sql 並將結果對映為 java 物件並返回。採⽤ ORM思想解決了實體和資料庫對映的問題,對 jdbc 進⾏了封裝,遮蔽了 jdbc api 底層訪問細節,使我們不⽤與 jdbc api 打交道,就可以完成對資料庫的持久化操作 。
MyBatis 官⽹地址: https://mybatis.org/mybatis-3/
Mybatis 架構
1). mybatis 配置⽂件
SqlMapConfig.xml ,此⽂件作為 mybatis 的全域性配置⽂件,配置了 mybatis的運⾏環境等資訊。mapper.xml ⽂件即 sql 對映⽂件,⽂件中配置了運算元據庫的 sql語句。此⽂件需要在SqlMapConfig.xml 中載入。
2). 通過 mybatis 環境等配置資訊構造 SqlSessionFactory 即會話⼯⼚
3). 由會話⼯⼚建立 sqlSession 即會話,運算元據庫需要通過 sqlSession 進⾏。
4). mybatis 底層⾃定義了 Executor 執⾏器接⼝運算元據庫, Executor接⼝有兩個實現,⼀個是基本執⾏器 BaseExecutor 、⼀個是快取執⾏器 CachingExecutor 。
5). MappedStatement 也是 mybatis ⼀個底層封裝物件,它包裝了 mybatis 配置資訊及 sql對映資訊等。mapper.xml ⽂件中⼀個 sql 對應⼀個 MappedStatement 物件, sql 的 id 即是 Mapped statement 的 id 。
6). MappedStatement 對 sql 執⾏輸⼊引數進⾏定義,包括 HashMap 、基本型別、 pojo , Executor通過Mapped Statement 在執⾏ sql 前將輸⼊的 java 物件對映⾄ sql 中,輸⼊引數對映就是 jdbc程式設計中對 preparedStatement 設定引數。
7). MappedStatement 對 sql 執⾏輸出結果進⾏定義,包括 HashMap 、基本型別、 pojo , Executor通過Mapped Statement 在執⾏ sql 後將輸出結果對映⾄ java 物件中,輸出結果對映過程相當於 jdbc程式設計中對結果的解析處理過程。
Mybatis快速入門
開發步驟
① . 新增 MyBatis 的座標
② . 準備資料庫環境
③ . 編寫 User 實體類
④ . 編寫核⼼⽂件 SqlMapConfig.xml
⑤ . 編寫對映⽂件 UserMapper.xml
⑥ . 編寫測試類
環境搭建
1 導⼊依賴
-
<!--mybatis座標-->
-
<dependency>
-
<groupId>org.mybatis</groupId>
-
<artifactId>mybatis</artifactId>
-
<version>3.4.5</version>
-
</dependency>
-
<!--mysql驅動座標-->
-
<dependency>
-
<groupId>mysql</groupId>
-
<artifactId>mysql-connector-java</artifactId>
-
<version>8.0.16</version>
-
</dependency>
-
<!--單元測試座標-->
-
<dependency>
-
<groupId>junit</groupId>
-
<artifactId>junit</artifactId>
-
<version>4.12</version>
-
</dependency>
-
<!--lombok座標-->
-
<dependency>
-
<groupId>org.projectlombok</groupId>
-
<artifactId>lombok</artifactId>
-
<version>1.16.20</version>
-
</dependency>
-
<!--⽇志座標-->
-
<dependency>
-
<groupId>log4j</groupId>
-
<artifactId>log4j</artifactId>
-
<version>1.2.17</version>
-
</dependency>
2準備資料庫環境
-
create database mybatis;
-
use mybatis;
-
CREATE TABLE `user` (
-
`id` int(11) NOT NULL AUTO_INCREMENT,
-
`username` varchar(32) NOT NULL COMMENT '⽤戶名稱',
-
`sex` char(1) DEFAULT NULL COMMENT '性別',
-
`address` varchar(256) DEFAULT NULL COMMENT '地址',
-
PRIMARY KEY (`id`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
insert into `user` (`id`, `username`, `sex`, `address`)
-
values(NULL,'Tom','男','北京');
-
insert into `user` (`id`, `username`, `sex`, `address`)
-
values(NULL,'Jack','男','上海');
-
insert into `user` (`id`, `username`, `sex`, `address`)
-
values(NULL,'Rose','⼥','⻄安');
-
insert into `user` (`id`, `username`, `sex`, `address`)
-
values(NULL,'Poll','⼥','利⽐亞');
3編寫 User 實體
-
@Data
-
public class User {
-
private Integer id;
-
private String username;
-
private String sex;
-
private String address; }
4 編寫 MyBatis核心檔案
⽂件名 : SqlMapConfig.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.cj.jdbc.Driver"/>
-
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test_wensong"/>
-
<property name="username" value="root"/>
-
<property name="password" value="root"/>
-
</dataSource>
-
</environment>
-
</environments>
-
<!--配置關聯的SQL語句的對映⽂件-->
-
<mappers>
-
<mapper resource="UserMapper.xml"/>
-
</mappers>
-
</configuration>
5 編寫 UserMapper 對映⽂件
⽂件名 : 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="userMapper">
-
<!--查詢所有⽤戶-->
-
<select id="findAll" resultType="com.wensong.pojo.User">
-
select * from user
-
</select>
-
</mapper>
6 查詢所有使用者
-
public class UserTest {
-
@Test
-
public void findAllTest() throws IOException {
-
//載入核⼼配置⽂件 SqlMapConfig.xml
-
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
-
//構造SQLSessionFactory物件
-
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-
//構造SQLSession物件
-
SqlSession sqlSession = sqlSessionFactory.openSession();
-
//執⾏查詢語句
-
List<User> userList = sqlSession.selectList("userMapper.findAll");
-
for (User user : userList) {
-
System.out.println("user = " + user);
-
}
-
//釋放資源
-
sqlSession.close();
-
}
-
}
查詢結果顯示:
知識小結
-
1). 搭建環境, 導⼊依賴
-
mybatis , mysql資料庫驅動, junit , lombok
-
2). 準備資料庫環境
-
3). 編寫實體類User
-
4). 編寫核⼼配置⽂件
-
A. mybatis的運⾏環境 -----> <environments>
-
B. 載入對映配置⽂件 -------> <mappers>
-
5). 編寫對映配置⽂件
-
SQL語句
-
6). 編寫測試程式碼
-
A. 載入Mybatis的核⼼配置⽂件
-
B. 構造SqlSessionFactory
-
C. 構造SqlSession
-
D. 調⽤SqlSession中的selectList執⾏查詢
-
E. 釋放資源
相關文章
- mybatis入門學習MyBatis
- MyBatis 框架之快速入門程式MyBatis框架
- Java持久層框架Mybatis入門Java框架MyBatis
- 【java】三大框架學習入門Java框架
- 深入學習Spring框架(一)- 入門Spring框架
- 入門MyBatis框架我一點都不慌MyBatis框架
- MyBatis研習錄(01)——MyBatis概述與入門MyBatis
- 【Pytorch教程】迅速入門Pytorch深度學習框架PyTorch深度學習框架
- 01-Spring Security框架學習--入門(二)Spring框架
- [轉載] 快速學習-Mybatis框架概述MyBatis框架
- 【Mybatis】Mybatis快速入門MyBatis
- MyBatis入門學習-連線oracle實現CURD基本操作MyBatisOracle
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- Python入門之web2py框架學習!PythonWeb框架
- Python Django框架是什麼?Python學習入門!PythonDjango框架
- MyBatis 入門MyBatis
- Mybatis入門MyBatis
- MyBatis系列(一):MyBatis入門MyBatis
- 學習使用mybatis框架初遇異常MyBatis框架
- MyBatis(二)MyBatis入門程式(MyBatis demo)MyBatis
- MyBatis(一) 入門MyBatis
- mybatis快速入門MyBatis
- mybatis入門程式MyBatis
- Java Mybatis 框架入門教程JavaMyBatis框架
- ROS入門學習ROS
- nuxt 入門學習UX
- Nginx入門學習Nginx
- Linux入門學習Linux
- GORM學習入門GoORM
- Vue入門學習Vue
- MyBatisPlus入門學習MyBatis
- spring入門學習Spring
- spring-boot快速入門學習筆記-整合JPA mybatis rabbitmq mongodb redisSpringboot筆記MyBatisMQMongoDBRedis
- go微服務框架go-micro深度學習(二) 入門例子Go微服務框架深度學習
- 用一個小例子教你入門機器學習框架TensorFlow機器學習框架
- Mybatis 入門介紹MyBatis
- Mybatis極速入門MyBatis
- MyBatis--快速入門MyBatis