初识Mybatis

1 篇文章 0 订阅

      首先来说呢,跟之前学过的对比来说:Hibernate是全自动化的ORM映射框架,MyBatis是半自动化得ORM映射框架。

一、什么是Mybatis

       Mybatis是支持自定义sql查询,存储过程和高级映射的优秀持久层框架,它几乎消除了所有JDBC代码和手动设置参数以及结果集的检索。它和hibernate一样,也具有POJO和数据库记录相互映射的功能。


二、创建SqlSessionFactory

      每一个MyBatis 应该都是以一个SqlSessionFactory实例为中心。一个SqlSessionFactory实例可以使用SqlSessionFactoryBuilder来创造。从配置类中创造的定制SqlSessionFactoryBuilder实例,可以使用XML配置文件来生成一个SqlSessionFactory实例。

第一种:从XML中创造SqlSessionFactory 

       从XML文件中创造SqlSessionFactory实例是非常简单的。推荐使用一个类路径资源来进行配置,你也可以使用一个Reader实例,甚至使用URL路径。
MyBatis有一个Resources通用类,类中有许多方法可以简单地从类路径和其他地址中加载资源。
  
String resource = "org/mybatis/example/Configuration.xml"; 
   Reader reader = Resources.getResourceAsReader(resource);
   sqlMapper = new SqlSessionFactoryBuilder().build(reader); 

XML文件包含了许多MyBatis的核心设置,包括一个获取数据库连接(Connection)实例的数据源(DataSource),和一个决定事务作用域和操作的TransactionManager。全部的XML配置文件的内容将在以后提到,先给出一个简单的样子。
   
 <?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>

 
XML配置文件中还有其它许多内容,上面的例子只是指出了最重要的部分。注意这个XML的标头,需
要一个DTD验证文档。environment项里包含了事务管理和连接池的环境配置。mappers项中包含了一
系列SQL语句映射定义的XML文件。 

第二种:不使用XML文件新建SqlSessionFactory 

如果你更想直接使用Java语言而不是XML来生成这些配置,更或者你想使用自己的配置生成器,MyBatis提供了一个完整的配置类来完成XML文件一样的配置。
   
 DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
   TransactionFactory transactionFactory = new JdbcTransactionFactory(); 
   Environment environment =
     new Environment("development", transactionFactory, dataSource);
   Configuration configuration = new Configuration(environment);
   configuration.addMapper(BlogMapper.class);
   SqlSessionFactory sqlSessionFactory =
     new SqlSessionFactoryBuilder().build(configuration);

 
这个配置里,加载了一个映射类。映射类是包含了SQL映射注解的Java类,可以用来取代XML。然而,由于Java注解的一些限制和MyBatis映射的复杂性,一些高级的映射还是要用XML来配置,比如嵌套映射等。由于这个原因,MyBatis会自动查找和加载已经存在的XML。比如说上面的代码,BlogMapper.xml将会被类路径中BlogMapper.class加载。以后会详细讨论这些。

三、使用SqlSessionFactory获取SqlSession 

假设你有一个SqlSessionFactory,你就可以来获取一个SqlSession实例,SqlSession包含了针对数据库执
行语句的每一个方法。你可以直接使用SqlSession执行已经映射的每一个SQL语句。比如:
 
 SqlSession session = sqlMapper.openSession();
   try {
     Blog blog = (Blog) session.select(
       "org.mybatis.example.BlogMapper.selectBlog", 101);
   } finally {
 
     session.close();
   }

 
上述步骤对于使用MyBatis的上一个版本(即iBatis2)的用户来说比较熟悉。现在,有一个更加清晰的
方式。使用一个有正确参数和返回值的接口,你就可以更加清晰和安全地编写代码,从而避免出错。像
 
这样:
   
 SqlSession session = sqlSessionFactory.openSession();
 
   try {
 
     BlogMapper mapper = session.getMapper(BlogMapper.class);
     Blog blog = mapper.selectBlog(101);
 
   } finally {
 
     session.close();
   } 

这样mybatis的基本配置就完成了。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值