喫個飯的時間就讓你搭建完Mybatis框架

目錄

一.準備Maven工程

二.準備數據庫

1.建立鏈接MySQL

2.新建數據庫mybatis建立名爲user的表

3.插入數據

三.下載Mybatis.jar包並導入工程

1.導入方式用jar包方式

2.導入Mybatis-保存

3.刷新

4.擴展

四.創建實體類

1.新建

2.實體類User

3.實現一個Serializable的序列化接口

4.聲明與數據庫相同的字段

5.生成get、set方放和tosting

五.配置主配置文件和映射文件

鋪路工作-先創建完成Dao接口:

1.在操作數據庫的時候都是基於DAO,於是創建一個DAO的包,在裏面新建一個接口

2.在裏面提供一個方法來查詢

3.在resources下新建一個SqlMapConfig.xml文件

4.xml文件要有聲明有約束

鋪路準備工作完畢,開始配置環境

5.1主配置文件內容SqlMapConfig.xml

5.2配置映射文件位置

最後

六.創建測試類

運行成功查出數據


一.準備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&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

 

擴展:要在配置鏈接數據庫中的Url地址中加入關鍵代碼

?useUnicode=true&amp;characterEncoding=UTF-8&amp;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();
    }
}

運行成功查出數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章