mybatis学习笔记---入门

一、什么是mybatis

MyBatis 是支持普通SQL 查询,存储过程和高级映射的优秀持久层框架。

MyBatis  消除 了几乎所有的JDBC 代码和参数的手工设置以及结果集的检索。

MyBatis  使用简单的XML 或注解用于配置和原始映射,将接口和Java 的POJOs (Plan   Old   Java   Objects ,普通的Java 对象)映射成数据库中的记录。

MyBatis 的简化并且规范了JDBC的持久化方式,同时又相对与hibernate更加灵活,可以说是介于JDBC和HIBERNATE之间的优秀持久化框架。

MyBatis的前身就是IBATIS,只是版本更新后由于某些事情进行了更名。


二、入门

1》使用顺序:

1、通过XML,或从Configuration 类的习惯准备的实例中构建的方式创建SqlSessionFactoryBuilder 对象。

2、通过SqlSessionFactoryBuilder 获取SqlSessionFactory

1-1》XML方式示例获取SqlSessionFactoryBuilder

String resource = "org/mybatis/example/Configuration.xml"; 
Reader reader = Resources.getResourceAsReader(resource); 
sqlMapper = new SqlSessionFactoryBuilder().build(reader); 
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 头部的声明,需要用来验证 XML文档正确性。environment 元素体中包含对事
务管理和连接池的环境配置。 mappers 元素是包含所有 mapper (映射器) 的列表,这些 mapper

的 XML文件包含 SQL代码和映射定义信息。

1-2》不使用XML获取SqlSessionFactoryBuilder

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); 

注意这种情况下配置是添加映射类。映射类是 Java 类,这些类包含 SQL 映射语句的注
解从而避免了 XML文件的依赖, XML映射仍然在大多数高级映射(比如:嵌套 Join 映射)
时需要。出于这样的原因,如果存在 XML配置文件的话,MyBatis 将会自动查找和加载一
个对等的 XML 文件(这种情况下,基于类路径下的 BlogMapper.class 类的类名,那么
BlogMapper.xml将会被加载)。

2-1》从 SqlSessionFactory中获取 SqlSession

方法1

SqlSession session = sqlMapper.openSession(); 
try { 
Blog blog = (Blog) session.selectOne( 
"org.mybatis.example.BlogMapper.selectBlog", 101); 
} finally { 
session.close(); 
} 
方法2

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

3-1》我们还需要一个映射XML(写SQL的地方)

<?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" parameterType="int" resultType="Blog"> 
select * from Blog where id = #{id} 
</select> 
</mapper> 
上面代码的BlogMapper(相当于一个对象),ID=“selectBlog” 相当于表明一个SQL的ID值(方法), 用于调用SQL。

上文就可以“Blog blog = (Blog) session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101); ” 这样来调用了。

基本上可以用JAVA的对象和方法来理解。


最后:

       1、如 BlogMapper 这样的映射器类来说,还有一个妙招。它们中间映射的语句可以不需要
在 XML中来写,而可以使用 Java 注解来替换。比如,上面的 XML示例可以如下来替换:  

package org.mybatis.example;
public interface BlogMapper {
@Select("SELECT * FROM blog WHERE id = #{id}")
Blog selectBlog(int id);
} 
对于简单语句来说,使用注解代码会更加清晰,然而 Java 注解对于复杂语句来说就会
混乱,应该限制使用。因此,如果你不得不做复杂的事情,那么最好使用 XML来映射语句。
当然这也取决于你和你的项目团队的决定,看哪种更适合你来使用,还有以长久方式来
使用映射语句的重要性。也就是说,不要将自己局限在一种方式中。你可以轻松地将注解换
成 XML映射语句,反之亦然。

        2、命名解析:为了减少输入量,MyBat is 对所有的命名配置元素使用如下的命名解析规则,包括语句,结果映射,缓存等

》直接查找完全限定名(比如“com.mypackage.MyMapper.selectAllThings”),如果发现就使用。 

短名称(比如“selectAllThings”)可以用来引用任意含糊的对象。而如果有两个或两个以上的(比如“com.foo.selectAllThings”和“com.bar.selectAllThings”),那么就会得到错误报告,说短名称是含糊的,因此就必须使用完全限定名。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值