MyBatis框架

学习资料

网页mybatis资料:https://mybatis.org/mybatis-3/zh/index.html
网页mybatis-spring资料:https://mybatis.org/spring/zh/
MyBatis-Plus:https://mp.baomidou.com/guide/page.html
视频面试题:https://www.bilibili.com/video/BV13J411P7Hu?from=search&seid=16748018485770429973
视频:https://www.bilibili.com/video/BV1mE411X7yp?from=search&seid=9893654318657041643

学习内容

在这里插入图片描述

三层框架

在这里插入图片描述

持久层技术解决方案

在这里插入图片描述

mybatis概述

在这里插入图片描述
ORM:Object Relational Mapping 对象关系映射
简单说就是把实体类的属性和数据库表字段对应起来,让我们可以操作实体类就是操作数据库。

安装

pom.xml中加入如下代码

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.6</version>
</dependency>

mybatis环境搭建

一、domain目录中存放实体类,实体类中字段类型和数据库表中的字段类型保持一致。
创建字段的get set方法,创建toString方法

二、Dao目录中存放存放用户的持久层接口,
在这里插入图片描述
三、resources目标下存放mybatis.xml文件,该文件用于存放mybatis的配置信息
xml文件中的config的约束

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  // mybatis的主配置文件
<configuration>
//配置环境
  <environments default="development">
  //配置mysql的环境
    <environment id="development">
    //配置事务类型
      <transactionManager type="JDBC"/>
      // 配置数据源(连接池)
      <dataSource type="POOLED">
      //配置连接数据库的基本信息
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  // 指定映射文件的位置,映射文件是指每个dao独立的配置文件
  // mapper.xml文件的路径在resources目录下
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

四、创建映射配置文件
映射文件的mapper约束

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  // namespace 指向IUserDao
<mapper namespace="org.mybatis.example.IUserDao">
// 编写sql,
// id的值和Dao接口中的方法名相同,
// resultType指明sql执行结果要封装到哪里去,可以配置实体类的全限定类名
  <select id="selectBlog" resultType="Blog">
  //可以不写分号
    select * from Blog where id = #{id};
  </select>
</mapper>

环境搭建注意事项

在这里插入图片描述

mybatis框架执行原理

在这里插入图片描述
一、读取配置文件
1、使用类加载器,它只能读取类路径的配置文件
2、使用ServletContext对象的getRealPath()
二、创建工厂 mybatis使用了构建者模式
构建者模式把对象的创建细节隐藏掉,使用者直接调用方法即可拿到对象
三、生产sqlSession使用了工厂模式
工厂模式的优势是解耦,降低类之间的依赖关系
四、session.getMapper()使用了代理模式
代理模式的优势是在不修改源码的基础上对已有方法进行增强

Dao层使用注解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MyBatis的CRUD-新增

在这里插入图片描述
在这里插入图片描述

MyBatis的CRUD-更新

在这里插入图片描述
在这里插入图片描述

MyBatis的CRUD-删除

在这里插入图片描述
在这里插入图片描述
Dao层只传了一个int类型的id,xml中的参数可以随便写,不受限制

MyBatis的CRUD-查询一个

在这里插入图片描述
在这里插入图片描述

MyBatis的CRUD-模糊查询

在这里插入图片描述

select * from User where username like ‘% n a m e s e l e c t ∗ f r o m U s e r w h e r e u s e r n a m e l i k e c o n c a t ( ′ s e l e c t ∗ f r o m U s e r w h e r e u s e r n a m e l i k e c o n c a t ( ′ {name}%' 不常用 select * from User where username like concat ('%',#{name},'%') select * from User where username like concat ('%',' nameselectfromUserwhereusernamelikeconcat(selectfromUserwhereusernamelikeconcat({name}’,’%’)

MyBatis的CRUD-聚合查询,返回一行一列

在这里插入图片描述

MyBatis的CRUD-新增返回id值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Mybatis参数类型 paramentType

一、简单类型 int String
二、传递pojo对象,javabean
在这里插入图片描述
在这里插入图片描述
三、传递pojo包装对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Mybatis的输出结果封装 resultType

一、简单类型
二、pojo对象
三、popjo列表

Mybatis的输出结果封装 resultMap

当实体类的属性名和mysql的字段名不一致时,可以使用配置查询结果的列名和实体类的属性名的对应关系

在这里插入图片描述

properties标签使用

使用一、在标签内部配置连接数据库的信息
在这里插入图片描述
使用二、通过resource属性引用外部配置文件信息,常用属性
将jdbc的链接信息单独放到resources目录的一个jdbcConfig.properties文件中
在这里插入图片描述
使用时使用resource 属性指定配置文件的位置,是按照类路径的写法来写的,并且必须存放在类路径下


在这里插入图片描述
使用三、使用url属性,使用不灵活
在这里插入图片描述
在这里插入图片描述

typeAliases标签

typeAliases可以配置domain中类的别名,指定别名后不再区分大小写
方法一
在这里插入图片描述
方法二
在这里插入图片描述
package标签在typeAliases中用于指定domain中要配置别名的包;在mapper标签中用于指定dao接口所在的包
在这里插入图片描述

连接池

我们在实际开发中都会使用连接池,使用连接池可以减少我们获取连接所消耗的时间。
连接池就是用于存储连接的一个容器
容器其实就是一个集合对象,该集合必须是线程安全的,不能两个线程拿到同一个连接;该集合还必须实现队列的特性:先进先出

mybatis连接池

一、连接池配置位置
主配置文件SqlMapConfig.xml中的dataSource标签中的type属性
type属性表示采用何种连接池方式
二、mybatis连接池提供了三种方式的配置
POOLED 采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现
UNPOOLED 采用传统的获取连接的方式,虽然也实现了javax.sql.DataSource接口,但是并没有使用池的思想
JNDI 采用服务器提供的JNDI技术实现 来获取DataSource对象,不同的服务器拿到的datasource是不一样的( 注意:如果不是web或者是maven的war工程,则不能使用)

mybatis中事务

在这里插入图片描述

mybatis中动态sql 语句-if标签

<if test="user.name!=null and user.name!=‘’">
and id=#{user.id}
</if>

mybatis中动态sql 语句-where标签

在这里插入图片描述

mybatis中动态sql 语句-foreach标签

select * from user where id in (1,2,3)
在这里插入图片描述

mybatis中动态sql 语句-抽取重复的语句

在这里插入图片描述

mybatis表之间的关系

在这里插入图片描述

mybatis多表查询

在这里插入图片描述

一对一查询-通过写子类的方式

使用不多
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一对一查询-建立实体类关系的方式

在这里插入图片描述
在这里插入图片描述

一对多查询

在这里插入图片描述
在这里插入图片描述

多对多查询

在这里插入图片描述
在这里插入图片描述

延迟加载

在这里插入图片描述

一对一-实现延迟加载

在这里插入图片描述
在这里插入图片描述

一对多-实现延迟加载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mybatis中的缓存

在这里插入图片描述

Mybatis中的一级缓存

在这里插入图片描述
执行一次查询
在这里插入图片描述
执行两次查询
在这里插入图片描述
sqlSession.clearCache() 也可以清空缓存

触发清空一级缓存的情况

在这里插入图片描述

Mybatis中的二级缓存

在这里插入图片描述
在这里插入图片描述

注解开发CRUD

@Select
@Update
@Delete
@Insert
在这里插入图片描述

注解建立实体类属性和数据库表中列的对应关系

方法一
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值