目录
【1】持久化就是程序的数据,在瞬时状态(new)和持久状态(数据库等)之间的转化。通过数据库操作进行转化。
【2】ORM.(O=javaBean)(R=关系型数据库)(M=映射)。
注意:ORM这三方面要保持一致。任意部分的变动都要一起检测。
【1】Mybatis是一个“半成品”的“ORM”框架。作用于DAO层。
【2】和hibernate相比,他是一个轻量级的选手。有着灵活的SQL的操作。
4.Mybatis的子配置文件。(通过namespace属性指定一个整个工程中唯一的标识符)
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的三个核心对象以及生命周期。
6.SqlSession执行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,线程使用的时原始的缓存对象