目錄
一,準備工作
1.1 創建工程
1.2 準備數據?
1.3 數據庫連接字符串
1.4 創建持久層接口UserInfoMapper
?1.5 單元測試
二,注解的基礎操作
2.1 打印日志
2.2 參數傳遞?
2.3 增(Insert)?
2.4 刪(Delete)?
2.5 改(Update)
?編輯2.6 查(Select)?
三,XML的基礎操作
3.1 配置數據庫
3.2 指明xml路徑
3.3??寫xml的實現?
3.4 增(Insert)
?3.5 刪(Delete)
3.6 改(Update)?
3.7 查(Select)?
一,準備工作
1.1 創建工程
創建springboot工程,導入mybatis的起步依賴,mysql的驅動包。
然后在pom。xml文件中導入Mybits依賴和MySQL驅動依賴?
Mybits依賴包:
<dependency>
????????<groupId>org.mybatis.spring.boot</groupId>
????????<artifactId>mybatis-spring-boot-starter</artifactId>
????????<version>2.3.1</version>
</dependency>MySQL驅動包:
<dependency>
????????<groupId>com.mysql</groupId>
????????<artifactId>mysql-connector-j</artifactId>
????????<scope>runtime</scope>
</dependency>
1.2 準備數據?
導入MySQL的User用戶表
-- 創建數據庫
DROP DATABASE IF EXISTS mybatis_test;CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;-- 使?數據數據
USE mybatis_test;-- 創建表[??表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`username` VARCHAR ( 127 ) NOT NULL,`password` VARCHAR ( 127 ) NOT NULL,`age` TINYINT ( 4 ) NOT NULL,`gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-? 0-默認',`phone` VARCHAR ( 15 ) DEFAULT NULL,`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-刪除',`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;-- 添加??信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );
創建userInfo實體類:
?
1.3 數據庫連接字符串
Mybatis要連接數據庫,需要數據庫相關參數配置
①Mysql驅動類
②登錄名
③密碼
④數據庫連接字符串
application.yml文件和application的配置內容如下:
?# yml數據庫連接配置
spring:
????????datasource:
????????????????url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=
????????????????username: root
????????????????password: 123456?? ? ? ? ? ? ? ? #密碼修改為自己數據庫的密碼!!!
????????????????driver-class-name: com.mysql.cj.jdbc.Driverperties
#properties?
#驅動類名稱
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#數據庫連接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding
#連接數據庫的??名
spring.datasource.username=root
#連接數據庫的密碼
spring.datasource.password=123456
1.4 創建持久層接口UserInfoMapper
@Mapper注解:表示Mybatis中的Mapper接口,程序運行時,框架會自動生成接口的實現類對象,并交給Spring的IOC容器管理。
@Select注解:代表的就是selsct查詢,也就是注解對應方法的具體實現內容
?1.5 單元測試
在創建出來的SPringleBoot工程中,test目錄下已經創建好了測試類,可以直接使用這個測試類來進行測試。
idea自動生成測試類,選擇要測試的方法,書寫測試代碼?
二,注解的基礎操作
2.1 打印日志
yml文件中配置
結果為:?
2.2 參數傳遞?
正常的查找語句是這樣的
這樣的話就只能查找id=1的數據,所以id需要寫成動態的數值
這樣就可以了。
也可以通過@Param,設置參數的別名,如果使用@Param設置別名,#{}里面的屬性必須和@Param設置的一樣。
2.3 增(Insert)?
SQL語句
把SQL中的常量替換為動態的參數
使用Mapper接口:
返回主鍵:insert默認返回的是受影響的行數,數據插入后需要后續的一系列操作,則需要獲取到新插入數據的id,如果想拿到自增id需要在Mapper接口方法上添加一個Option的注解。
(useGeneratedKeys:它將Mybatis使用的JDBC的getGeneraterKeys方法來取出由數據庫內部生成的主鍵【比如像Mysql這種關系型數據庫管理系統的自動遞增字段】默認值為false)
(keyPropeerty:它能夠唯一識別對象的屬性,MyBatis會使用getGeneraterKets的返回值或者insert語句的selectKey子元素設置它的值,默認值:未設置)
?測試數據:
2.4 刪(Delete)?
SQL語句
Mapper接口:
2.5 改(Update)
SQL語句:
Mapper接口:
2.6 查(Select)?
使用XML的方式進行查詢,存在數據封裝的問題
查詢結果為:
Mybatis會自動的根據數據庫字段名和Java對象的屬性名,進行映射,如果名稱一樣,就進行賦值。
有如下解決方式:
①:對字段進行重命名,結果映射方法頁
重命名前:
重命名后:?
②: 使用Results注解
結果的復用:
③:駝峰命名(推薦)
三,XML的基礎操作
MyBatisXML的實現方式需要以下幾步
3.1 配置數據庫
3.2 指明xml路徑
3.3??寫xml的實現?
?
selectAll()與下面id名稱一致,返回的是對象或者list,此處定義的都是返回的數據的類型
?常見一些錯誤:①xml和接口定義的方法名稱不一致? ②mapper的路徑配置和xml的路徑不一樣
3.4 增(Insert)
?方法的聲明:
方法的實現:
拿返回值(獲取自增ID):
?
?3.5 刪(Delete)
方法的聲明:
生成測試用例
3.6 改(Update)?
方法的聲明:
方法的實現:
3.7 查(Select)?
結果映射也是三種方式:
①sql字段別名(同上)
②自動轉駝峰(同上)
③定義Result
?
板書: