MyBatis入門

1 MyBatis安裝

要使用 MyBatis, 只需將 mybatis-3.5.4.jar 文件置于類路徑(classpath)中即可。

如果使用 Maven 來構建項目,則需將下面的依賴代碼置于 pom.xml 文件中:

<dependency>

? <groupId>org.mybatis</groupId>

? <artifactId>mybatis</artifactId>

? <version>3.5.4</version>

</dependency>

2?從 XML 中構建 SqlSessionFactory

每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的實例為核心的。SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個預先配置的 Configuration 實例來構建出 SqlSessionFactory 實例。

從 XML 文件中構建 SqlSessionFactory 的實例非常簡單,建議使用類路徑下的資源文件進行配置。

String resource = "org/mybatis/example/mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

XML 配置文件中包含了對 MyBatis 系統的核心設置,包括獲取數據庫連接實例的數據源(DataSource)以及決定事務作用域和控制方式的事務管理器(TransactionManager)。這里先給出一個簡單的示例:

<?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>

? <environments default="development">

? ? <environment id="development">

? ? ? <transactionManager type="JDBC"/>

? ? ? <dataSource type="POOLED">

? ? ? ? <property name="driver" value="com.mysql.jdbc.Driver"/>

? ? ? ? <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>

? ? ? ? <property name="username" value="root"/>

? ? ? ? <property name="password" value="123456"/>

? ? ? </dataSource>

? ? </environment>

? </environments>

? <mappers>

? ? <mapper resource="org/mybatis/example/BlogMapper.xml"/>

? </mappers>

</configuration>

3?從 SqlSessionFactory 中獲取 SqlSession

有了 SqlSessionFactory,我們可以從中獲得 SqlSession 的實例。SqlSession 提供了在數據庫執(zhí)行 SQL 命令所需的所有方法。可以通過 SqlSession 實例來直接執(zhí)行已映射的 SQL 語句。例如:

SqlSession session = sqlSessionFactory.openSession();

BlogMapper mapper = session.getMapper(BlogMapper.class);

Blog blog = mapper.selectBlog(101);

4?創(chuàng)建映射器

這里給出一個基于 XML 映射語句的示例,它應該可以滿足上個示例中 SqlSession 的調用。

CREATE TABLE `blog` (

? `id` int(11) NOT NULL AUTO_INCREMENT,

? `title` varchar(100) DEFAULT NULL,

? `author_id` int(11) DEFAULT NULL,

? `content` varchar(1000) DEFAULT NULL,

? PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8;

insert? into `blog`(`id`,`title`,`author_id`,`content`) values (101,'MyBatis 3.5.1發(fā)布了!',NULL,'用參數名稱指定的keyProperty可能導致ExecutorException。#1485'),(102,'MyBatis 3.5.2發(fā)布了!',NULL,'SQL Builder現在支持LIMIT,OFFSET #1521和FETCH FIRST #1582。'),(103,'MyBatis 3.5.3發(fā)布了!',NULL,'在包含的<sql />的CDATA中支持變量替換。#1615');

將MySQL的依賴代碼置于 pom.xml 文件中:

<dependency>

? <groupId>mysql</groupId>

? <artifactId>mysql-connector-java</artifactId>

? <version>5.1.48</version>

</dependency>

Blog.java

package org.mybatis.example;

public class Blog {

public int id;

public String title;

public String authorId;

public String content;

// 省略get set方法

}

BlogMapper.java

package org.mybatis.example;

public interface BlogMapper {

Blog selectBlog(int id);

}

BlogMapper.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="org.mybatis.example.BlogMapper">

? <select id="selectBlog" resultType="org.mybatis.example.Blog">

? ? select * from Blog where id = #{id}

? </select>

</mapper>

文檔在命名空間 “org.mybatis.example.BlogMapper” 中定義了一個名為 “selectBlog” 的映射語句,這樣就可以在對應的映射器接口調用方法,就像下面這樣:

BlogMapper mapper = session.getMapper(BlogMapper.class);

Blog blog = mapper.selectBlog(101);

命名空間的作用有兩個,一個是利用更長的全限定名來將不同的語句隔離開來,同時也實現了接口綁定。只要將命名空間置于合適的 Java 包命名空間之中,你的代碼會變得更加整潔,也有利于你更方便地使用 MyBatis。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 引自: MyBatis 3 | 入門 1. 簡介 MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存...
    小淼不賣萌閱讀 314評論 0 0
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,248評論 0 4
  • 1.1 框架 框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法...
    遼A丶孫悟空閱讀 1,313評論 0 21
  • 什么是mybatis MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。MyBatis...
    seadragonnj閱讀 2,398評論 0 7
  • Valentine 轉載請標明出處。 Mybatis介紹以及使用 MyBatis is a first class...
    valentine_liang閱讀 923評論 0 5

友情鏈接更多精彩內容