Mybatis---Mybatis的一些基本概念(跟Hibernate做对比)

1.不久之前,我总结了一下hibernate框架的学习笔记,现在我们来学习一下另一个持久层框架Mybatis。

我觉得同样是学习持久层框架,个人觉得通过类比的方法学习是最好的,我们可以先学hibernate框架,或者你学习Mybatis框架也行,最重要的是学习的方法,不要分别去学,没有联系的去学,那么我觉得肯定很辛苦,或者你还有更好的方法,欢迎指教,如果我说的有不对的地方也欢迎指出来。

2.在学习之前,我会问一下什么时候会用到Mybatis框架,什么时候又去用hibernate框架?

首先我觉得hibernate是一个很优秀的持久层框架,它高度依赖对象,或者它是环绕着对象来设计的,他的思想非常的好,但是对于处理一些很复杂的级联关系会比较冗杂一下,因为它有自己的hql语句,但是Mybatis框架,我觉得对于一些复杂的级联关系处理起来会比较方便一些,因为它的设计理念就是面向sql的,虽然如此,但是还是个人喜欢吧,hibernate框架就像IOS系统,而Mybatis框架就像Android系统。

3.好了,闲话少说,下面来正式的介绍一下这款优秀的持久层框架---Mybatis

      MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

重点的词语就是(1)定制化SQL:因为他支持sql语句动态化(后面会介绍)

    (2)存储过程

    (3)高级映射

Mybatis框架的好处:

    (1)几乎不用写复杂的jdbc代码,后面你用到的时候也会发现不用考虑去手动配置参数和结果集,这个我觉得很爽。

    (2)MyBatis 可以对配置和原生Map使用简单的 XML 或注解

    (3)可以将POJO普通的java对象映射成数据库中的记录

4.怎么得到Mybatis框架,并把它放进项目中去?

使用Mybatis框架非常的容易,只要去官网下载就行,我现在介绍的时候是Mybatis-3.4,先解压,只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

5.下面按照步骤来介绍使用Mybatis框架:

(1)在学习hibernate框架的时候我们知道,要使用hibernate框架首先要配置hibernate.cfg.xml配置文件,同样是持久层框架,Mybatis框架也是一样的,不过他的文件名

不一样,我通常把他命名为mybatis-config.xml文件。

下面我们来通过xml文件的结构来看看异同之处:

首先hibernate:(略过前面的命名空间的介绍)

<hibernate-configuration>

<session-factory>

<property name="" value=""></property>

<property name="" value=""></property>

.......

</session-factory>

<mapper />

</hibernate-configuration>

然后看看Mybatis的:

<configuration>

<!-- 这里可以配置常用的数据库连接,或者配置c3po数据库连接池-->

//这里也可以不用配置

<properties resource="属性配置文件">

</properties>

<!--为你要映射的类创建别名,后面在***Mapper.xml可以用到-->

<typeAliases>

<typeAlias alis="" type="POJO类的全名"></typeAlias>

</typeAliases>

<environments default="development">

<environment id="development">

<transcationManager type="JDBC"/>

<dataSource type="POOLED">

<property name="" value="">

.......

</dataSource>

</environment>

</environments>

<mappers>

<mapper></mapper>

</mappers>

</configuration>

是不是觉得很相似?认真的看一下那个标签,就会发现差不多了。

6.除了很重要的配置xml,是不是还有一个同样很重要的映射文件,hibernate的是*.hbm.xml,Mybatis的是***Mapper.xml.下面我们也区分一下:

首先是hibernate的:(在hibernate中一个实体类就要对应一个数据表,所以就是实体类到数据表的映射)

<hibernate-mapping>

<class name="类的全称" table="数据库的表名">

<id name="实体类的成员变量名" type="该属性的类型">

<column name="生成数据表的字段名"></column>

<generator class="主键生成策略" >

<property name="实体类的成员变量名" type="该属性的类型">

<column name="生成数据表的字段表" length="">

</property>

</id>

</class>

</hibernate-mapping>

然后看看Mybatis的:(命名空间一样忽略,mybatis的高度定制的sql对应实体类的增删改查)

所以它的更加简单:

<mapper  namespace="实体类的全名加上Mapper例如:com.zqu.mybatis.dao.pojo.UserMapper" >

<!-- 然后就是定制你的sql语言了-->

<select id="这个select的唯一标识" parameterType="传入值的类型" resultType="返回值的类型">

</select>

下面的是例子

<select id="GetUserByID" parameterType="int" resultType="User">
select uid as "uid",uname as "uName",upwd as "uPassword" from `user` where uid=#{id}
</select>

</mapper>

7.讲完了这些下面就来说说,怎么获取Mybatis框架的SQLSessionFactory吧

同样要说的是hibernate框架的:

首先创建配置对象

Configuration config = newConfiguration().config();

接着创建服务注册对象

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties).buildServiceRegisty();

然后创建SessionFactory sessionFactory =config.buildSessionFactory(serviceRegistry);

然后得到Session会话

Session session =sessionFactory.getCurrentSession();这个要在hibernate.cfg.xml文件里配置或者

Session session =sessionFactory.openSession();这个一定要记得关闭。

然后是Mybatis的:

第一步定义xml文件所在的路径:

String resource = “mybatis-config.xml的具体路径”;

然后定义一个输入流对象接受调用resource类的方法

InputStream inputStream =Resource.getResourceAsStream(resource);

然后我们就可以创建SqlSessionFactory了

SqlSessionFactory sessionFactory = newSqlSessionFactorybuilder().build(inputStream);

最后我们可以得到会话Session

SqlSession session =sessionFactory.openSession().

这样我们就了解了Mybatis的基本构成了,下一篇,笔者将通过一个生动的实例来加深理解说明。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值