标签:
1、 简介
MyBatis本是apache的一个开源项目iBatis的升级版,2013年11月迁移到Github,是三层架构中持久层框架。
目前提供了Java、.NET、以及Ruby三种语言实现的版本。
2、 提供一种“半自动化”的ORM实现。这种半自动化是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行;而MyBaits的着力点,则在于POJO与SQL之间的映射关系。
3、 JavaBean EJB POJO Entity的区别
JavaBean:遵守JavaBean规范规范编写的java类,由该类实例化的对象成为JavaBean对象。编写JavaBean的目的是为Web容器提供可重用组件,提高数据封装性和降低耦合性。
EJB:在企业级应用中,需要可伸缩的性能和事务、安全机制等,这样才能保证企业级应用的需求。EJB就是在JavaBean规范的基础上提出的更高协议要求。它比JavaBean更复杂,功能更强大,它是JavaEE的核心组件。
POJO(plain ordinary Java Object):简单的Java对象。在企业级应用中,发现使用EJB异常繁琐和复杂,完全没必要每次都用,于是提出了POJO的概念,目的是为了避免和EJB混淆所创建的简称。所谓POJO就是指普通的JavaBean,它是相对EJB而言,但它比JavaBean更加纯粹,只有属性和get/set方法,且只能装载数据,作为数据存储的载体,而不具有业务逻辑处理能力。
Entity:实体类主要是作为数据管理和业务逻辑处理层面上存在的类别,用于对必须存储的信息和相关行为建模的类,一般与数据库表相对应。需要注意的是实体类涉及三层架构各层,一般将其归类到业务逻辑层。
4、 ORM(Object/Relation Mapping 对象/关系数据库映射):它是一种规范,描述了对象与关系数据库之间的映射基本特征。
ORM框架:它通过实现ORM规范,完成面向对象的编程语言到关系数据库的映射。它可以把关系型数据库封装成对象,解决面向对象编程语言与底层关系数据库不协调的问题。它是面向对象编程语言与关系数据库之间的桥梁。
ORM映射基本规则:
5、 环境配置
6、 常见配置文件元素:
settings:用于设置MyBatis运行时方式,比如是否启用延迟加载等;
typeAliases:为Java类型指定别名,可以在XML文件中用别名取代Java类的全限定名;
environments:用于配置数据源信息,包括连接池、事务属性等;
mappers:程序中所有用到的SQL映射文件都在这里列出,这些映射SQL都被MyBatis管理;
7、数据源
数据源是一种提高数据库连接性能的常规手段,数据源会负责维持一个数据连接池,当程序创建数据源实例时,系统会一次性的创建多个数据库连接,并把这些数据库连接保存在连接池中。典型的空间换时间来提高性能。
8、 SQL映射文件
MyBaits使用JDBC的sql语句保存到SQL映射的XML文件中,来完成POJO与SQL之间的映射关系。
SQL映射文件中由很少的几个顶级元素:
select:映射查询语句;
insert:映射插入语句;
update:映射更新语句;
delete:映射删除语句;
sql:可以重用的SQL块,也可以被其它语句引用;
resultMap:用来描述如何从数据库结果集中来加载对象(最复杂);
cache:配置给定命名空间的缓存;
cache-ref:从其它命名空间引用缓存配置。
resultMap元素是MyBaits中最重要也是最强大的元素。它的设计就是简单的语句不需要明确的结果映射,而很多复杂语句确实需要描述他们的关系。
它有很多子元素:
9、 SQL映射器接口
用于调用SQL映射文件中的SQL语句,只有接口,没有实现类。
ThreadLocal
早在JDK1.2版本中就提供了ThreadLocal,为解决多线程程序并发问题提供了一种新的思路。使用ThreadLocal可以很简洁的编写出优雅的多线程程序。
ThreadLocal它不是一个线程,而是线程的一个本地化对象。当工作于线程中的对象使用ThreadLocal保存变量时,ThreadLocal为每一个使用该变量的线程分配一个独立的变量副本。所以每一个线程都可以独立的改变自己的副本,而不会影响其它线程所对应的副本。从线程的角度看,这个变量就像线程的本地变量,这也是类名中local所要表达的意思。
线程局部变量并不是java的新发明,很多语言在语法层面就提供线程局部变量。在Java中没有提供语言级支持,而是以一种变通的方法,通过ThreadLocal类提供支持。
Thread和线程同步机制都是为了解决多线程中相同变量的访问冲突问题,那么ThreadLocal与线程同步机制相比有如下特点:
MyBatis关联关系
一对一,<association property=”” column=”” javaType=”” parameterType=”” select=”” />
一对多,<collection property=”” column=”” javaType=”” parameterType=”” select=”” / >
继承关联:
(鉴别器)
<discriminator javaType=”” column=””>
<case value=”” resultType=””>
<result property=”” column=””/>
</case>
</discriminator>
MyBatis动态Sql
MyBatis的一个强大特性之一通常是它的动态sql能力。其用于实现sql的元素主要有:if,choose,trim,foreach。
<if test=””></if>
<choose>
<when test=””></when>
<otherwise></otherwise>
</choose>
<set>
<if test=””></if>
<set>
标签:
原文地址:http://www.cnblogs.com/littlejava/p/5724495.html