MyBatis知识总结

一.MyBatis简介

1.认识MyBatis
	MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC
代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java 
POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。
2.发展演变

apache开源项目: ibatis, ibatis是internet和abatis的组合,一个基于javach持久层的框架

2010年→apache software foundation >迁移> google code, 同年修改名称为MyBatis

2013年→google code →迁移→Gi tHub .

使用优势

  • 简单易学,快速上手,学习成本低
  • 数据库交互信息配置化
  • 动态SQL处理
3.优缺点

优点

	 (1)SQL被统一提取出来, 便于统一管理和优化
	 (2)SQL和代码解耦,将业务逻辑和数据访问逻辑分离
	 (3)提供映射标签,支持对象和数据库的ORM字段关系映射
	 (4)提供对象关系映射标签,支持对象关系组件维护
	 (5)灵活书写动态SQL,支持各种条件的动态SQL生成

缺点

	 (1)编写SQL语句时工作量大,尤其是字段多、关联表多的时候更是如此
	 (2)SQL语句依赖数据库,导致数据库移植性差
4.概念
名词解释
Mapper配置可以使用基于XML的Mapper配置文件来实现,也可以使用基于Java注解的MyBatis注解来实现,甚至可以直接用MyBatis提供的API来实现。
Mapper接口自行定义的- -个数据操作接口,类似于通常所说的DAO接口,MyBatis会自动为Mapper接口创建动态代理对象。
ExecutorMyBatis中所有的Mapper语句的执行都是通过Executor进行, Executor是MyBatis的一个核心接口。
SqlSession执行持久化操作的对象,类似于JDBC中的Connection对象。可以用SqlSess ion实例直接执行被映射的SQL语句。
SqlSessionFactory单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象获得。
5.工作流程

1.加载Mapper配置的SQL映射文件或SQL注解
2.通过读取配置文件,创建会话工厂SqlSessionFactory
3.根据会话工厂创建会话对象SqlSess ion,会话对象是一个接口,包含CRUD数据库操作的方法
4.创建Executor接口帮助会话对象执行操作
5.执行器将待处理的SQL信息封装到MappedStatement对象中
6.操作数据库,返回结果,结束流程

图解:

二.Spring使用MyBatis

1.MyBatis简单配置
名词应用
mybatis.config-location配置mybatis-config . xml路径,其中配置MyBatis基础属性
mybatis.mapper-locations配置Mapper对应的XML文件路径
mybatis.type-aliases-package配置项目中实体类的包路径
mybatis.configuration.map-underscore-to-camel-case下划线 与驼峰是否对应
spring.datasource.*数据源配置
2.具体步骤

(1)创建项目:

  • MyBatis依赖配置
<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
  • MyBatis的相关配置
#mysql配置
spring.datasource.url=jdbc:mysql://localhost:3306/test1?serverTimezone=UTC\
  &useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=12345678
#mybatis配置
#公共属性文件的配置地址
#mybatis.config-location=classpath:mybatis/mybatis-config.xml
#映射文件通配符的配置地址
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
#扫描别名包,和注解@Alias联用,暂时没用到

#表的下划线与类的驼峰式对应
mybatis.configuration.map-underscore-to-camel-case=true

(2)公共属性配置

		在resource的mybatis目录创建配置文件mybatis-config.xml

(3)表的映射XML文件配置

<mapper namespace="com.example.mybatisxmldemo.mapper.MessageMapper">
    <resultMap id="BaseResultMap" type="com.spring.mybatis.xml.model.Message" >
    &lt;!&ndash;配置主键映射关系,配置主键可以增加查询效率&ndash;&gt;
    <id column="msg_id" property="msgId" jdbcType="BIGINT" />
    &lt;!&ndash;配置普通字段的映射关系&ndash;&gt;
    <result column="msg_text" property="msgText" jdbcType="VARCHAR" />
   <result column="msg_summary" property="msgSummary" jdbcType="VARCHAR" />
    </resultMap>
    <sql id="Base_Column_List" >
        msg_id, msg_text, msg_summary
    </sql>
    <select id="selectAll" resultType="com.example.mybatisxmldemo.model.Message">
        SELECT
        <include refid="Base_Column_List" />
        FROM message
    </select>

三.MyBatis架构解析

1.架构分解
	API接口层:提供给外部使用的接口API。.

	数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。

	基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理。
2.应用构建

核心组件:

		SqlSess ionFactoryBean和MapperScannerConfigurer

SqlSess ionFactoryBean依赖外部注入的数据源DataSource,包括以下属性:

  • configlocation: mybatis配置文件的位置
  • mapperLocations:多个mapper映射文件的位置
3.开发要素
		dao接口类:定义数据库操作的接口方法,主要是增删改查
		
		mapper映射文件:保存操作数据库表的增删改查的SQL语句,可以用注解替代
		
		pojo类:数据库表对应的java类

四.MyBatis进阶

动态SQL

动态SQL是MyBatis的强大特性之一,MyBatis3采用了功能强大的基于OGNL的表达式完成动态SQL。
动态SQL主要元素:

元素说明
< if>判断语句,用于单条件分支判断。
< choose> (< when>、< otherwise> )相当于Java中的switch… .case… .default 语句,用于多条件分支判断。
< where>、< trim>、 < set>辅助元素,用于处理一些SQL拼装、特殊字符问题。
< foreach>循环语句,常用于in语句等列举条件中。
< bind>从OGNL表达式中创建一-个变量, 并将其绑定到上下文,常用于模糊查询的sq1中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值