Mybatis总结

Mybatis

Mybatis的核心API

API名称作用
Resources用于读取和解析mybatis-config.xml全局配置文件
SqlSeesionFactory主要作用就是用于创建Sqlsession的
SqlSeesion1.SqlSession类似于JDBC开发中Connection对象的作用,一个SqlSession中封装了一个Connection对象,所以mybatis开发的时候使用SqlSession对象控制事务。2.由于mybatis是采用mapper文件作为代理DAO接口的实现,所以我们需要使用SqlSession去获取最终的DAO实现类对象,然会调用DAO的方法

Mybatis中接口参数的绑定机制

  1. 接口方法中一个参数:mapper文件中#{}取值语法里面写上面都可以
  2. 接口方法多个参数
    2.1注解方式绑定:专门用于条件查询,可读性高@Param
    2.2使用Map作为接口的方法的参数:也可以用于查询,但是可读性差,不建议使用

Mapper文件中的另一种取值语法

  1. ${}取值方法的使用
  2. #{}与${}两种语法生成SQL语句的方式对比
    2.1#{}以占位符的方式生成SQL语句可以避免SQL注入的风险
    2.2 ${}以字符串拼接形成SQL语句,存在SQL注入的风险

关于Mybatis的结果集映射

  1. Mybatis默认结果集封装规则:mybatis默认会将数据库查询返回结果集中的字段名,对应封装到实体类属性名一致的属性上
  2. 当查询返回结果集中的字段名与实体属性名不一致的解决
    2.1第一种方案:给字段名其一个别名,与对方实体类属性名一致
    2.2第二种方案:使用mybatis的resultMap自定义结果集映射关系
    Ps:resultMap未来主要用于多表查询时的结果映射关系

一对一
示例:一个人拥有一个身份证,一个身份证只能属于一个人

一对多
示例:一个部门有多个员工,一个员工属于多个部门
一个用户有多个订单,一个订单属性某个用户
一个班级有多名学生,一个学生属于一个班级

多对多
示例:一个学生可以选择多门课程,一门课程可以被多名学生选修

使用Mybatis开发关联关系的查询

  • 表的设计
  • 一对一场景
    一对一场景,表的外键放在哪一方都可以
    一对多场景 外键存放在多的一方

Java中的对应实体类设计

  1. 一对一
    简称:你找我,放在你那一方,我找你放在我这一方
  2. 一对多
    对于关系属性放置在根据谁找谁,根据谁的一方
    Ps:关系属性的确立,要根据实际的业务场景进行分析,一般很少有双向关系的场景

使用Mybatis开发关联关系的查询

  1. 一对一Mapper实现
  2. 一对多Mapper实现

关联关系Mybatis查询的实现

  1. 如果关系属性是一个简单的Java自定义对象类型,使用association标签封装
  2. 如果关系属性是一个lsit集合,则使用collection标签封装

多对多关联关系查询处理

  1. 表的设计
    Ps:多对多其实可以拆分为多个一对多

Mybatis中的动态SQL机制

  1. SQL片段:我们可以将多个SQL语句涉及到重复使用的信息,定义成为一个SQL片段,提高代码的复用性

  2. where动态SQL子句(用于条件查询)

  3. set子句动态SQL(用于更新)

  4. trim

  5. forEach

    在这里插入图片描述

上面是forEach的实现方法

//实现where动态查询子句
<trim prefix="where" prfixOverrides="and/or">
//prefix属性 应用于指定查询子句的关键字
//prefixOverrides属性用于指定,优化剔除的第一个非法的关键字,and或者or
	<if test="username!=null">username like '%' || #{username} || '%'</if>
	
	以此类推	..............
</trim>


//实现set动态SQL子句
update t_user
//prefix指定子句的关键字
//suffixOverrides指定剔除的最后一个非法字符,逗号
<trim prefix="set" suffixOverrides=",">
	<if text="username!=null"> username=#{username},</if>
	以此类推。。。。。
</trim>

Mybatis中的缓存机制

  1. 什么是缓存机制(cache):缓存是将查询的数据放在内存中存储一种优化项目的机制
  2. 使用缓存机制的好处
    21.加入缓存后,可以减轻后端数据库服务器的压力
    2.2缓存是基于内存存储操作数据,提高了系统的查询性能
  3. Mybatis框架的缓存机制
    3.1缓存分类
    1.一级缓存:一级缓存是基于同一个sqlsession执行的操作基于共享数据,默认开启的
    2.二级缓存:二级缓存是基于同一个SqlsessionFactorg执行的操作可以共享数据,默认关闭的

缓存注意事项

  • 一级缓存
    一级缓存是基于同一个SqlSession执行的操作可以共享数据。默认开启的。
    PS: 关闭一级缓存,在mybatis-config.xml中可以配置关闭
  • 使用二级缓存的注意事项:
    -1) 二级缓存数据共享范围是同一个SqlSessionFactory下的
  1. sqlSession使用完毕,要手动关闭,否则mybatis不会像缓存中存数据。
  2. 涉及到的实体类的对象,要实现序列化接口 Serializable 。
  • 脏读
    PS: Mybatis中在执行了写操作提交事务后, 会对操作的数据在缓存中清除,然后保证下次查询的数据与数据库数据是同步的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值