重溫Mybatis(一)---------hello,mybatis

     新的一年了,手裏的工作也陸續完工了,在北京漂了快4年了,明年可能有新的打算,考慮回到我夢開始的地方。爲了把握住金三銀四,打算從今天開始,溫習一下自己掌握的技術棧。就先拿mybatis開刀~

    Mybatis是當今最流行的持久層框架之一,優秀的半自動ORM設計,可以讓我們靈活的通過配置來完成數據庫與java實體類的映射,免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作,使我們的代碼與sql分離,更好的管理項目。

    首先,我們要使用mybatis很簡單,只要引入相應的jar包即可,拿maven項目來說,只需要引入其gav依賴,我們的例子中要結合mysql來學習mybatis,所以還需要引入mysql相關的驅動包:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

    每個基於mybatis的應用都是以一個 SqlSessionFactory 的實例爲核心的,SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder(建造者模式) 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件(傳統spring項目,官方建議)或一個預先配置的 Configuration 實例(springboot項目)來構建出 SqlSessionFactory 實例。

  這裏提到了SqlSessionFactoryBuilder,SqlSessionFactory XML 配置文件三個重要的元素,首先從配置文件說起。

  打開IDEA,創建一個普通的maven項目,在resource文件夾下創建一個名爲mybatis-config.xml的配置文件(名字隨便取,建議使用mybatis-config.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>
    <properties resource="config.properties">
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </properties>

    </typeHandlers>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/divLayoutInfoMapper.xml"/>
    </mappers>
</configuration>

配置文件的詳細內容在下節詳細討論,這裏就創建好該配置文件,便於我們能夠拿到SqlSessionFactoryBuilder類,進而獲取到SqlSessionFactory類。

代碼如下:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

   這樣,我們就能拿到SqlSessionFactory對象了,接下來,從 SqlSessionFactory 中獲取 SqlSession,再通過SqlSession拿到相應的mapper,調用其方法即可

try (SqlSession session = sqlSessionFactory.openSession()) {
 DivLayoutInfoDao mapper = session.getMapper(DivLayoutInfoDao.class);
 List<DivLayoutInfo> divLayoutInfos = mapper.selectOne();
}

  那麼問題來了,sql在哪裏執行的呢?mapper怎麼和sql綁定的呢?怎麼就通過調用方法的方式就實現了sql的執行呢?,那就是mybatis的核心之一,mapper.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="mybatis.dao.DivLayoutInfoDao">
    <resultMap id="result" type="mybatis.pojo.DivLayoutInfo">
        <result property="id" column="id" />
        <result property="modeName" column="mode_name"/>
    </resultMap>
    <select id="selectOne" resultMap="result">
    select * from div_layout_info
  </select>
</mapper>

  頭文件也是mapper特有,表示該配置文件爲mybatis的mapper配置文件,mapper標籤中的namespace屬性值對應與該mapper綁定的接口類,resultMap標籤中的type屬性值爲查詢結果集對應的java實體類路徑,sql標籤中的id對應接口中的方法名,這樣,我們就能夠把mapper接口和mapper.xml配置關聯起來了,這也是爲什麼我們可以通過調用接口中的方法就能實現執行sql的原因了。

  至此,一個簡單的hello,mybatis的demo就完成了~

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