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 提供了在数据库执行 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。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 引自: MyBatis 3 | 入门 1. 简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存...
    小淼不卖萌阅读 315评论 0 0
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 6,271评论 0 4
  • 1.1 框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法...
    辽A丶孙悟空阅读 1,313评论 0 21
  • 什么是mybatis MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis...
    seadragonnj阅读 2,400评论 0 7
  • Valentine 转载请标明出处。 Mybatis介绍以及使用 MyBatis is a first class...
    valentine_liang阅读 927评论 0 5

友情链接更多精彩内容