什麼是mybatis
mybatis是一個優秀的基於java的持久層框架,它內部封裝了jdbc,使開發者只需要關注sql語句本身,而不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。
mybatis通過xml或註解的方式將要執行的各種statement配置起來,並通過java對象和statement中sql的動態參數進行映射生成最終執行的sql語句,最後由mybatis框架執行sql並將結果映射爲java對象並返回.
我們以前沒學mybatis的時候用的jdbc,一句一句的寫的挺頭疼的,用了框架之後我們就開發更快,縮短開發時間,這裏所說的持久層是三層架構的一層,三層架構是:表現層,業務層,持久層,三層是一種軟件架構,而MVC是一種模式,後面這幾句話是我自己的理解
本文摘自源地址
爲什麼要學習mybatis
因爲 框架幫我們做了底層的事情,我們不需要關注底層代碼的編寫,讓我們開發更加方便
mybatis環境搭建
這裏採用了maven來搭建,如果還沒學maven的話就是下載jar包導入jar包了,可以去mybatis官網去下載他們的jar包
- 開發工具 IDEA2018
- 構建工具maven3.5
- mysql-5.7
- mybatis-3.5.4
我們可以按照 官網所說的一步步來,你百度搜索mybatis官網也可以
mybatis官網官方文檔
點擊入門
這裏首先,打開你的編輯器,我這裏用的是IDEA,這個界面怎麼打開的我真的不想再說了但是啊,我的同學既然發問過我,我就寫下吧
你們以前創建好的項目,都是每次默認,打開的以前寫的項目
你只需要呢,點擊關閉,這個項目就可以了,close project
這裏,就不用採用骨架了,因爲,只需要查查,數據庫,到控制檯看下就可以了
這裏因爲怕錄製的GIF大小超過5M就節約了點等待的時間,因爲CSDN上面是不能上傳5M以上的GIF
上面有版本信息,用最新的也沒事,如果你想用舊版本可以去maven倉庫去找,當然你也可以用國內的倉庫地址,至於怎麼找到這個連接地址,只需要去百度搜索 maven repository,如果需要你安全驗證的話,你就輸入驗證碼就可以了,進去自己搜索
maven倉庫地址
這裏多提一嘴,這裏是看以前版本的自己點擊第一個就可以找pom依賴了
如果上面有說錯的請聯繫我QQ 1423228256,因爲你要查數據庫肯定少不了,連接驅動mysql-connect-java,上面那個有一個springboot整合mybatis的啓動器,不是springboot的啓動器,也懶得改了,當你學到springboot的時候會發現一個新大陸
<!-- 導入依賴 -->
<dependencies>
<!-- mybatis依賴跟版本 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!-- 因爲自己要測試就導入junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
這裏給大家看一個IDEA連接 連接數據庫的方便,這張GIF錄好被壓縮過,如果你不知道這個東西的話,第一次使用,點擊的下面的一個,什麼反正差不多意思是下載的意思,我忘記了,點他一下就可以跟我一樣了,位置我忘記了,是爲了大家方便,就給大家演示了下,怕小白不知道
到這裏我們去創建一個數據庫,複製粘貼SQL語句就可以了
create database mybatis;
use mybatis;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL COMMENT '用戶名稱',
`birthday` datetime default 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`(`username`,`birthday`,`sex`,`address`) values ('adger','2020-04-03 16:47:15','男','長沙');
我下面 使用的 快捷鍵是 Alt + Insert(筆記本上面可能是Alt + Fn + F12),實體類,已經創建好了,順便擴展下,實體類 != javaBean,Bean 在計算機中是有可重複使用組件的意思,我決定還是再給大家擴展下,關於這個實體類,我記得還有一個插件,可以加上幾個註解,就可以生成一個實體類,那個插件的名字叫,Lombok,關於這個實體類,有很多叫法,有的叫,domain,pojo等等
至於javaBean爲什麼一定寫private,我覺得是一種javaBean的規範,再提供一個公開的set get 方法,然後再寫一個dao接口,接口寫完,就開始配置mybatis環境了
去官網,看這句話,先不要看上面的
去官網,複製,粘貼,就可以了,現在不要急,這些不用記,但是你必須得看的懂,記得下面的mapper中的resources自己改下,這裏mybatis喜歡叫mapper我自己喜歡一致性,就叫這個名字了,如果你的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">
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置環境 -->
<environments default="development">
<!-- 配置mysql環境 -->
<environment id="development">
<!-- transactionManager 事務類型 -->
<transactionManager type="JDBC"/>
<!-- 配置數據源,也叫連接池,type="有三個類型"-->
<dataSource type="POOLED">
<!-- 配置連接數據庫得基本信息 8.0的版本注意後面加上
?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
mysql jar包也要引入高版本的
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每個dao獨立的配置文件 -->
<mappers>
<mapper resource="club/adger/dao/UserDao.xml"/>
</mappers>
</configuration>
然後再去創建映射配置文件
複製粘貼,過去,自己改改就這麼簡單,雙擊類或者方法就可以了,複製全限定類名,對了Ctrl + / 快速生成註釋,Ctrl + Shift + / 快速生成文檔註釋
<?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">
<!-- 這裏的namespace屬性是你dao接口的全限定類名 -->
<mapper namespace="club.adger.dao.UserDao">
<!-- select 中的id 屬性 不能隨便亂寫,必須是你dao接口中的方法名 -->
<!-- resultType 是把結果集封裝在你的實體類 -->
<select id="findAll" resultType="club.adger.entity.User">
select * from user
</select>
</mapper>
再寫一個測試類
//1.讀取配置文件
InputStream in = Resources.getResourceAsStream("mybatis.xml");
//2.創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工廠生產SqlSession對象
SqlSession session = factory.openSession();
//4.使用SqlSession創建Dao接口的代理對象
UserDao userDao = session.getMapper(UserDao.class);
//5.使用代理對象執行方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//6.釋放資源
session.close();
in.close();
注意事項
ORM:
Object Relational Mappging 對象關係映射
簡單的說:
就是把數據庫表和實體類及實體類的屬性對應起來
讓我們可以操作實體類就實現操作數據庫表。
實體類中的屬性和數據庫表的字段名稱保持一致。
user User
id id
username username
總結
mybatis的環境搭建
第一個:創建UserDao.xml 和 UserDao.java時名稱是爲了,(個人習慣)保持一致。
在Mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
所以:UserDao 和 UserMapper是一樣的,叫法
第二個:mybatis的映射配置文件位置必須和dao接口的包結構相同
第三個:映射配置文件的mapper標籤namespace屬性的取值必須是dao接口的全限定類名
第四個:映射配置文件的操作配置(select),id屬性的取值必須是dao接口的方法名
當我們遵從了第2,3,4點之後,我們在開發中就無須再寫dao的實現類。
- 創建maven工程並導入座標
- 創建實體類和dao的接口
- 創建Mybatis的主配置文件 mybais.xml
- 創建映射配置文件 UserDao.xml
- 測試
擴展
這是一個模板,怎麼搞呢,打開設置
File and Code Templates
/**
* Created with IntelliJ IDEA.
* @Auther: Adger
* @Date: ${YEAR}/${MONTH}/${DAY}/${TIME}
*/
**@Auther 後面改名字,自己的名字,注意類名第一個字母大寫,我這裏隨便寫的,加油,奧裏給,有興趣可以加我QQ羣一起交流討論 793858121 **