MyBatis学习(一)

80 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情

简介

MyBatis是一款开源的轻量级ORM框架,相比于屏蔽了SQL的ORM框架来说,MyBatis只是提供了参数和结果集的映射,Java对象方法和sql语句的映射。开发人员可以灵活对SQL进行改动,在优化方面有很大优势。

入门

对Java项目来说,要使用框架,首先需要将框架的包引入到类路径下,这里使用maven进行管理,MyBatis的maven包如下:

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

引入包路径之后,我们就可以开始学习MyBatis了。不管是什么框架,使用的套路都是:加载配置-初始化配置信息-使用-销毁 这几大步骤,所以我们就从加载配置开始。
MyBatis的应用都是以SqlSessionFactory为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder获得。而 SqlSessionFactoryBuilder 需要通过从XML中构建出来的Configuration对象中获取配置信息。如下:

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

有了SqlSessionFactoryBuilder之后,我们就可以通过SqlSessionFactoryBuilder获取Session对象,对数据库的操作都可以通过Session进行操作,如下:

try (SqlSession session = sqlSessionFactory.openSession()) {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
}

上面的Mapper其实是我们自定义的一个接口,selectBlog也是接口中的一个方法,MyBatis通过配置信息,就可以将接口自动代理,将XML中的sql节点和mapper接口中的方法进行映射。

MyBatis中的配置

对应XML中的配置节点

properties

相当于key value形式的配置,将一些固定的属性放进去,如下:

<properties resource="org/mybatis/example/config.properties">
  <property name="username" value="dev_user"/>
  <property name="password" value="F2Fa3!33TYyg"/>
</properties>

然后我们就可以在别的地方对这些属性进行引用,如下:

<dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
</dataSource>