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 提供了在数据库执行 SQL 命令所需的所有方法。可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:

SqlSession session = sqlSessionFactory.openSession(); BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); 4 创建映射器 这里给出一个基于 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发布了!',NULL,'用参数名称指定的keyProperty可能导致ExecutorException。#1485'),(102,'MyBatis 3.5.2发布了!',NULL,'SQL Builder现在支持LIMIT,OFFSET #1521和FETCH FIRST #1582。'),(103,'MyBatis 3.5.3发布了!',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。