目錄
1.在操作數據庫的時候都是基於DAO,於是創建一個DAO的包,在裏面新建一個接口
3.在resources下新建一個SqlMapConfig.xml文件
一.準備Maven工程
打開IDEA創建一個新的項目
二.準備數據庫
安裝Mysql步驟:https://blog.csdn.net/weixin_39332529/article/details/106262264
安裝後默認數據庫。
我們做項目更常用Navicat,所以我們就使用Navicat來創建一個新的表吧!
1.建立鏈接MySQL
2.新建數據庫mybatis建立名爲user的表
3.插入數據
三.下載Mybatis.jar包並導入工程
1.導入方式用jar包方式
<packaging>jar</packaging>
2.導入Mybatis-保存
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
</dependencies>
有人說我保存了怎麼看不到導入成功的jar包呢,因爲你少了這關鍵一步
3.刷新
這樣就能看到導入相同版本的jar包了
4.擴展
數據庫的操作需要mysql-connector-java
需要日誌的部分需要導入log4j
需要單元測試需要導入junit
四.創建實體類
1.新建
java開發都是基於實體類的,於是就在java目錄下新建
2.實體類User
3.實現一個Serializable的序列化接口
public class User implements Serializable
4.聲明與數據庫相同的字段
5.生成get、set方放和tosting
右鍵選擇Generate->Getter and Setter
右鍵Generate->tostring,全選點擊OK
五.配置主配置文件和映射文件
鋪路工作-先創建完成Dao接口:
1.在操作數據庫的時候都是基於DAO,於是創建一個DAO的包,在裏面新建一個接口
它也就是我們的用戶的持久層接口
2.在裏面提供一個方法來查詢
List<User> findALL();
3.在resources下新建一個SqlMapConfig.xml文件
這裏寫的是主配置文件內容和映射配置文件內容
4.xml文件要有聲明有約束
4.1Config的約束頭部信息內容
<?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">
導入位置:
4.2Mapper的約束頭部信息內容
導入前先創建映射配置文件IUseDao.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">
導入位置:
這個文件就是針對IUserDao的一個配置。下面還要有關於它的映射地址,映射地址如何寫接着往下看5.2
鋪路準備工作完畢,開始配置環境
5.1主配置文件內容SqlMapConfig.xml
<configuration>
<!--配置環境-->
<environments default="mysql">
<!--配置mysql的環境-->
<environment id="mysql">
<!--配置事務類型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置數據源(連接池)-->
<dataSource type="POOLED">
<!--配置鏈接數據庫的4個基本信息-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
擴展:要在配置鏈接數據庫中的Url地址中加入關鍵代碼
?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
原因:
DBC 與 MySQL 的這種誤解,導致出現了數據庫實際存儲的時間戳,與業務系統取到的值差了 13 或者 14 個小時,這個時間與美中是(=13)否(=14)採用夏令時息息相關。
當 JDBC 與 MySQL 開始建立連接時,會調用 com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer() 獲取服務器參數,其中我們看到調用 this.session.configureTimezone() 函數,它負責配置時區。我們的JDBC與MySQL連接時,由於時區不一致就出現了這種錯誤。
5.2配置映射文件位置
<mappers>
<mapper resource="com/example/dao/IUserDao.xml"></mapper>
</mappers>
映射配置文件指的就是每個DAO獨立的配置文件,這裏的路徑就是上面4.2新建的文件位置
最後
也是在這個文件裏寫我們的SQL語句,前提是在mapper標籤中寫入dao的全限定類名,回到IUserDao.xml位置
<mapper namespace="org.example.dao.IUserDao">
<!--配置查詢所有 -->
<select id="findAll" resultType="org.example.domain.User">
select * from user;
</select>
</mapper>
寫入位置:
注意:
要添加一個返回類型,也就是說查詢完了要封裝到哪裏去呢?用resultType來配置。最後查詢完後會把結果集封裝到User對象裏面
這裏的findALL方法就與IUserDao類裏查詢呼應上了!整個的環境搭建就搭完了
六.創建測試類
public class MybatisTest {
public static void main(String[] args) throws Exception{
//1.讀取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工廠生產SqlSession對象
SqlSession session = factory.openSession();
//4.使用SqlSession創建Dao接口的代理對象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理對象執行方法
List<User> users = userDao.findAll();
for (User user : users){
System.out.println(user);
}
//6.釋放資源
session.close();
in.close();
}
}