学习MyBatis官网总结1

一、什么是Mybatis

首先这篇文章的大部分内容是从MyBatis中文网 学习之后摘抄下来的,博主只是把自己没有弄懂的地方再加深一下印象,各位看官如想更深入的学习请移步MyBatis中文网

1.是一款优秀的持久层的框架,内部封装了JDBC的一系列操作,在开发时只需要关注SQL语句的本身,不需要担心JDBC的操作。

2.它避免了几乎所有的JDBC代码以及设置参数和获取结果集的工作,使用xml或者注解来配置和映射原生信息,将POJO(普通JAVA对象)映射成数据库中的记录。

3.通过xml文件和注解将要执行的各种statement配置好,并通过JAVA对象和statement中的SQL的动态参数进行映射生成最终执行的SQL语句,最后通过mybatis框架执行SQL语句并将结果映射为java对象返回。

二、Mybatis的安装要点

在Manven项目里,将依赖导入pom.xml里

一般项目里,将Mybatis-x.x.x.jar文件置于内路径中即可

基于Mybatis应用的核心都是一个SqlSessionFactory实例

这个实例通过SqlSessionFactoryBuilder获得

SqlSessionFactoryBuilder可以通过以下两种方式获取SqlSessionFactory

1.xml配置文件

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

2.预先配置的Configuration实例(一个简单的实例)

<?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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

三、最佳作用域

1.SqlSessionFactoryBuilder

最佳作用域是方法作用域(局部方法变量)

2.SqlSessionFactory

最佳作用域是应用作用域(应用在运行期一直存在)

3.SqlSession

最佳作用域是请求和方法作用域

四、Mybatis的加载顺序

1.先读取在properties元素体内指定的属性

2.然后根据properties元素中的resource属性读取类路径下属性文件或根据URL属性指定的路径读取属性文件,并覆盖之前读取过的同名属性

3.最后读取为方法参数传递属性,并覆盖之前读取过的同名属性

五、设置(Settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。博主这里给大家展示的是一些比较常用的设置。

六、类型别名(typeAliases)

 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。一些常用的别名大概就是这些。

七、类型处理器(typeHandlers)

MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。

八、环境配置(environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:

  • 每个数据库对应一个 SqlSessionFactory 实例

为了指定创建哪种环境,只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可。可以接受环境配置的两个方法签名是:

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);

environments 元素定义了如何配置环境。

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <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>

注意一些关键点:

  • 默认使用的环境 ID(比如:default="development")。
  • 每个 environment 元素定义的环境 ID(比如:id="development")。
  • 事务管理器的配置(比如:type="JDBC")。
  • 数据源的配置(比如:type="POOLED")。

默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。

九、映射器(Mappers)

       在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="完全限定资源定位符"/>
</mappers>

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file://用映射器接口实现类的全限定名"/>
</mappers>

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="类名"/>
</mappers>

<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="包名"/>
</mappers>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值