Mybatis框架

目录

Mybatis

介绍

优点

Mybatis缺点

2.mybatis01-环境搭建

1.持久化和ORM。

    【1】持久化就是程序的数据,在瞬时状态(new)和持久状态(数据库等)之间的转化。通过数据库操作进行转化。

    【2】ORM.(O=javaBean)(R=关系型数据库)(M=映射)。

             注意:ORM这三方面要保持一致。任意部分的变动都要一起检测。

2.Mybatis的概念和优缺点

    优点:

    【1】Mybatis是一个“半成品”的“ORM”框架。作用于DAO层。

    【2】和hibernate相比,他是一个轻量级的选手。有着灵活的SQL的操作。

    【3】小巧简单易学。

    【4】和JDBC相比,他实现了SQL和代码的分离。可重用。

    缺点:

    【1】SQL编写的量大。需要对sql语句熟悉。

    【2】数据库的移植性较差。

3.Mybatis的主题配置文件(仅供参考):

4.Mybatis的子配置文件。(通过namespace属性指定一个整个工程中唯一的标识符)

5.Mybatis的三个核心对象以及生命周期。

6.SqlSession执行sql的两种方式

Mybatis缓存


Mybatis

中文官方文档:http://www.mybatis.cn/

英文官方文档:https://mybatis.org/mybatis-3/

介绍

Mybatis(MyBatis SQL Mapper)是一种基于Java的持久化框架,它可以将 SQL 语句和 Java 对象的属性映射起来,可以通过 XML 或注解的方式进行配置,使得开发人员可以更加灵活地操作数据库。Mybatis 的主要特点是简单易学、灵活、强大和高效。

Mybatis 的核心组件包括 SqlSessionFactory、SqlSession、Mapper 和 SQL 映射文件。其中,SqlSessionFactory 是 Mybatis 的关键组件,它是用来创建 SqlSession 的工厂,SqlSession 是 Mybatis 提供的一个会话对象,用来操作数据库。Mapper 是定义与数据库交互方法的接口,SQL 映射文件则是定义 SQL 语句和 Java 对象的属性映射关系的 XML 文件。

使用 Mybatis 进行持久化操作,首先需要定义 Mapper 接口和 SQL 映射文件,然后通过 SqlSessionFactory 创建 SqlSession,最后在 SqlSession 中调用 Mapper 接口中的方法进行数据库操作。Mybatis 还提供了一系列的高级特性,如分页、缓存、动态 SQL 和事务管理等,可以帮助开发人员更加方便地操作数据库。

Mybatis 是一个非常成熟和广泛应用的持久化框架,在许多 Java 项目中都得到了应用和验证。
 

优点

1.灵活性高:基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解 除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。

2.可维护性强:Mybatis将SQL语句和Java代码分离,易于维护和修改。同时,Mybatis提供了很多优化工具,可以帮助开发者优化SQL语句,提高应用程序的性能

3.与JDBC相比,减少50%以上的代码量,消减了JDBC大量的冗余的代码,不需要手动开关连接。

4.能够与Spring很好的集成。

5.提供映射标签,支持对象与数据库的ORM字段关系映射;也提供对象映射标签,支持对象关系组件维护。

缺点:

Mybatis缺点

1.SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。

2.SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

2.mybatis01-环境搭建(仅供参考)

1.持久化和ORM。
    【1】持久化就是程序的数据,在瞬时状态(new)和持久状态(数据库等)之间的转化。通过数据库操作进行转化。
    【2】ORM.(O=javaBean)(R=关系型数据库)(M=映射)。
             注意:ORM这三方面要保持一致。任意部分的变动都要一起检测。
2.Mybatis的概念和优缺点
    优点:
    【1】Mybatis是一个“半成品”的“ORM”框架。作用于DAO层。
    【2】和hibernate相比,他是一个轻量级的选手。有着灵活的SQL的操作。
    【3】小巧简单易学。
    【4】和JDBC相比,他实现了SQL和代码的分离。可重用。
    缺点:
    【1】SQL编写的量大。需要对sql语句熟悉。
    【2】数据库的移植性较差。

3.Mybatis的主题配置文件

1.数据源的相关信息

 <!-- environments 可以设置多个数据源, default属性指定了默认的数据源-->
    <environments default="development">
         <!-- environment 设置单个数据源,id属性给数据源指定一个唯一的名称 -->
         <environment id="development">
             <!--配置事务管理,采用JDBC的事务管理  -->
             <transactionManager type="JDBC"></transactionManager>
             <!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
             <dataSource type="POOLED">
                 <property name="driver" value="${driver}"/>
                 <property name="url" value="${url}"/>
                 <property name="username" value="${user}"/>
                 <property name="password" value="${password}"/>
             </dataSource>
         </environment>
    </environments>

2.相应的子配置的引用。程序中只需要加载主配置文件即可。

注意:新增配置文件需要在主配置文件添加引用。引用的xml地址。使用的是“/”不是“.”

    <!-- 将mapper文件加入到配置文件中 -->
    <mappers>
         <mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
    </mappers>

4.Mybatis的子配置文件。(通过namespace属性指定一个整个工程中唯一的标识符)

    【1】要执行的sql语句。(对应增删改查相应的标签)

    【2】实体类的映射信息。

<!-- namespace 指定了命名空间,在整个工程中唯一标识 -->
<mapper namespace="com.dao.EmpMapper">
   <!-- 查询用户表记录数
      select 标签用于执行查询语句
         id属性:在这个mapper中的唯一标识
         resultType 查询结果的返回值类型
   -->
   <select id="count" resultType="int">
      SELECT COUNT(1) as count FROM emp
   </select>
</mapper>

5.Mybatis的三个核心对象以及生命周期。

    【1】SqlSessionFactoryBuilder.
        作用:加载Mybatis的主配置文件,创建SqlSessionFactory.
        生命周期:用过即丢,只存在与方法体内部。
    【2】SqlSessionFactory
        作用:创建SqlSession实例。
        生命周期:Application范围内,与应用的生命周期保持一致。是个单例模式。
    【3】SqlSession
        作用:使用Mybatis的API执行sql。
        生命周期:对应一次数据库会话,用后关闭。线程级别不能共享。

6.SqlSession执行sql的两种方式

    【1】通过SqlSession实例直接运行要执行的sql。
        例如:sqlSession.selectList("找到唯一的sql");
    【2】基于Mapper接口方式操作数据。(借助于接口的方法来调用sql)
        a.创建一个接口。接口的位置要和Mapper文件同一个目录。命名也要一致。
        b.配置这个接口和对应Mapper的关系。
            使用nameSpace属性建立接口类和Mapper的关系。
            <mapper namespace="com.dao.EmpMapper"
            建立接口中方法和Mapper中sql的关系。
            1.方法名要对应 方法名对应id属性
            2.方法的参数要对应 paramterType属性
            3.方法的返回值要对应 resultMap属性和resultType属性
         <select id="count" resultType="int">
           SELECT COUNT(1) as count FROM emp
         </select>
         public int count();
        c.使用SqlSession的getMapper方法,获取接口对象。
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
        d.调用接口的方法,执行sql。

Mybatis缓存

一级缓存:

    1.session级别的缓存。

    2.默认都会有,不需要手动开启。

    3.线程不共享的。

    4.当session关闭或者flush时。session缓存清空。

二级缓存:

    1.sessionFactroy级别的缓存。同一个namespace内的select会被缓存。

    2.默认时不开启。需要手动开启。

    3.线程共享。

    4.当进行增删改的时候,缓存将被清空。

二级缓存开启的步骤:

    1.在mybatis的主配置文件中,开启缓存

<configuration>
   <settings>
      <setting name="cacheEnable" value="true"/>
      <setting name="lazyLoadingEnabled" value="false"/>
   </settings>
</configuration>

2.在mapper中的设置缓存

<cache
  eviction="FIFO"    // 回收策略
  flushInterval="60000"  // 缓存刷新的间隔时间
  size="512"         // 缓存大小
  readOnly="true" />  // 默认时false,表示其他线程调用都是复制缓存对象。如果为true,线程使用的时原始的缓存对象

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值