mybatis入门学习

本文介绍了Mybatis的基础知识,包括与Hibernate的对比、核心配置文件sqlMapConfig.xml的设置、Mapper映射文件的创建、如何处理不能自动映射的情况、动态SQL的使用以及特殊字符的处理。此外,还详细探讨了#{}与${}的区别,JDBC类型的使用,以及对一和对多关系映射的配置方法,强调了在Mybatis中配置对象关系映射的实际作用。
摘要由CSDN通过智能技术生成
  • mybatis和hibernate的比较
首先说一下两个持久层框架的前生,EJB,它是一个重量级的框架,同时具有天然分布式,自动负载均衡的优点,但是,它的致命缺点是不够灵活,不能充分适应业务,有些场景其实不需要分布式的特点它也提供。多条件查询时,使用EntityBean,但是每一种查询条件就得写一条sql,很麻烦,后面有了SessionBean的解决方案,但是同时就没有原生EntityBean自带的EJB那些好处了。
后面由于这些缺点,hibernate出现了,它是一个面向对象的持久层框架,可以让整个开发流程全部面向对象来开发,属于全ORM。
iBatis,mybatis的前生,维持原有的jdbc方式,前面部分使用面向对象的方式,具体到持久层时就使用sql这种面向过程的方式。属于半ORM。
总结下来就是
1)hibernate比较适合中小型项目,对性能要求不高,因为hibernate虽然是面向对象,但是底层仍然是sql,只不过是hql转为sql,这存在性能问题,同时sql对程序员不可见,造成sql无法优化。
2)hibernate是通过反射来完成映射的,性能很低。
3)iBatis是对jdbc的轻量级封装,它是很接近原生jdbc的性能,且使用sql,性能比较高,适合大型项目需要做很多sql优化的情况。
使用mybatis一般也很少做表与表之间的约束,而是通过代码来维护外键关系,因为如果外键这种东西存在的意义就是防止业务出错,加了外键就相当于要把这部分逻辑交给数据库去判断,无疑增加了数据库的压力,所以用代码去手动维护能更好的减轻数据库的压力,毕竟都是为了防止业务出错,不加外键只是代表把业务校验逻辑从数据库转移到了应用服务器。
具体到实际使用上,它两者的差别总结如下:
1)hibernate在对象这一块有一个PO实体对象,然后配置该对象的映射文件如User.hbm.xml,里面需要配置实体对象与表字段之间的关系,以及它与其他对象之间的一对多、多对一等关系,然后是核心配置文件hibernate.cfg.xml,最后就是SessionFactory获取Session。

2)mybatis是首先创建一个PO实体对象,这点一样,然后是配置该对象的映射关系文件UserMapper.xml,里面配置实体对象与表字段之间的对应关系,这点也一样,但是mybatis是没有hibernate那种需要配置各种对象与对象之间关系的映射配置,最后是核心配置文件sqlMapConfig.xml和SqlSessionFactory获取SqlSession。

  • 核心配置文件
1)环境配置

<!-- mybatis提供环境切换配置,即不同环境可以选择不同的配置 如开发环境选development  线上环境选deploy -->
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
    <environment id="development">
        <!--支持两种事务管理  JDBC/MANAGED(mybatis不予管理,自主管理,即交给有事务容器的框架管理)-->
        <!-- 使用jdbc事务管理-->
        <transactionManager type="JDBC"/>
        <!-- 数据库连接池  POOLED/UNPOOLED/JNDI  前两种就是说是否要使用连接池。最后一个是JNDI,这里简单说一下JNDI的概念。
                JNDI可以屏蔽底层数据库,它是自己模拟出一个服务器然后给应用服务器提供一个url去连接到数据库,url与底层数据库没有关系,
                不管是MySQL还是Oracle甚至Access都是一样的。这样做有个好处就是防止别人知道底层数据库,同时使用url能加密对数据库的访问。
              -->
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?charsetEncoding=utf8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </dataSource>
    </environment>
</environments>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值