问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MyBatis笔记

发布网友 发布时间:2024-10-09 12:35

我来回答

1个回答

热心网友 时间:2024-10-09 15:04

相关视频请移步到bilibili尚硅谷

相关代码请访问GitHub mybatis官方中文文档 文章及相关代码正在更新中

核心配置文件精简版

注意:当"http://mybatis.org/dtd/mybatis-3-config.dtd"设置为https时,idea无法识别xml中的sql,具体原因暂时未知

jdbc.properties配置文件
详细的内容

核心配置文件中的标签必须按照固定的顺序(有的标签可以不写,但顺序一定不能乱):properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

阿里巴巴druid数据源mapper配置文件简单的测试mapper配置文件的详细配置若使用别名需要在mybatis-config.xml中设置如果有多个参数mapper接口的方式有三种方式特殊的SQL语句解决模糊查询多行删除动态表名查询获取自增主键自定义映射resultMap

出现字段名不匹配的时候解决方法(处理映射关系):方法一:通过起别名的方式映射

方法二:当字段符合下划线_,而属性符合java的要求使用驼峰,在mybatis-config.xml开启驼峰命名自动映射

方法三:自定义映射规则 设置resultMap

处理多对一查询

方法一:级联方式处理

方法二:使用association属性处理

方法三:分步查询 EmpMapper.java

EmpMapper.xml

DeptMapper.java

DeptMapper.xml

分步查询的优点:可以实现延迟加载,配置延迟需要在核心配置文件中设置全局配置信息 lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。aggressiveLazyLoading:开启时,任一方法的调用都会加载该对象的所有延迟加载属性。否则,每个延迟加载属性会按需加载(参考 lazyLoadTriggerMethods)。当开启全局延迟加载时可配置mapper.xml配置文件中的association标签下的fetchType进行设置eager(立即加载)/lazy(延迟加载)
处理一对多查询

方法一:级联方式处理
动态SQL

根据特定条件拼装SQL语句
if、where、trim标签
多条件查询遇到的问题:因为sql的语法限制(sql中where后面不能直接放and出现并且where不能为结尾)

方法一:where后添加恒成立条件

方法二:添加where标签

方法三:自定义标签trim

choose、when、otherwrise标签
相当于java中的if...else if...else when:当前面的when成立后不再执行后面的when otherwrise:是指的其他情况
foreach标签
实现批量插入数据

实现批量删除 方法一:

方法二:

方法三:

sql标签
自定义sql片段通过include标签引入(refid属性指定id) 例如:
MyBatis缓存

MyBatis缓存分为一级缓存和二级缓存,注意:一级缓存默认开启 缓存是指查询数据会被缓存,下次查询相同数据时直接从缓存获取,不会再次访问数据库 一级缓存为SqlSession级别,二级缓存为SqlSessionFactory级别

一级缓存

mybatis的一级缓存是sqlSession级别的,也就是同一个SqlSession查询相同的数据时从缓存中查询,不用执行sql语句 sqlSession失效的四种情况:

二级缓存

mybatis的二级缓存是sqlSessionFactory级别的,也就是同一个sqlSessionFactory查询相同的数据时从缓存中查询,不用执行sql语句 二级缓存开启的条件:

sqlSessionFactory失效情况:

cache标签的相关配置

可用的清除策略有:

默认的清除策略是 LRU。flushInterval(刷新间隔)属性可以被设置为任意的正整数,设置的值应该是一个以毫秒为单位的合理时间量。默认情况是不设置,也就是没有刷新间隔,缓存仅仅会在调用语句时刷新。size(引用数目)属性可以被设置为任意正整数,要注意欲缓存对象的大小和运行环境中可用的内存资源。默认值是 1024。readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这就提供了可观的性能提升。而可读写的缓存会(通过序列化)返回缓存对象的拷贝。速度上会慢一些,但是更安全,因此默认值是 false。

mybatis缓存的查询顺序

先查询二级缓存,如果二级缓存没命中,再查询一级缓存,如果一级缓存没命中,则查询数据库 sqlSession关闭后,一级缓存中的数据会被写到二级缓存中

整合第三方缓存

处理的是二级缓存

整合EHCache

依赖

在resources下创建ehcache.xml

设置二级缓存类型

mapper.xml中的cache标签指定缓存类型

配置logback日志

存在SLF4J时,作为简易日志的log4j将失效,此时我们需要借助SLF4J的具体实现logback来打印日志。创建logback的配置文件logback.xml

EHCache配置文件说明mybatis逆向工程

正向工程:实体类生成sql。如:Hibenmate、jpa 逆向工程:数据库表生成资源文件

导入依赖逆向工程配置文件

generatorConfig.xml

配置之后点击插件mybatis-generator即可生成逆向工程

分页插件

limit(分页关键字) 、index、pageSize pageSize: 每页显示条数 pageNum: 当前页的页码 index: 当前页的起始索引: $index=(pageNum-1)\times pageSize$ cout:总记录数 totalPage:总页数

首页 下一页 2 3 4 5 上一页 尾页

依赖

mybatis核心配置文件添加mybatis-config.xml

测试类

第二种: 方式 官方文档

pageInfo
pageInfo属性值:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王卡专属免流包是什么意思 腾讯王卡专属流量是什么意思 人防临空墙排烟机房可以留洞吗? 瑞士转机的问题? 雅阁、第九代凯美瑞、迈腾,大空间的中级车推荐 云顶之弈双人排位介绍 金铲铲之战 金铲铲段位相差多少可以一起打? 现在上海办理居住证需要本人去吗 34周加5天是几个月 孕34周是几个月了 孕34周如何预防早产 ps画笔怎么自定义? 家装海天一色地中海设计风格,让家更自然舒适 地中海装修风格搭配,增添深海之美! 家里新房装修,地中海风格怎么样,主色调用蓝色可以吗?大概几种颜色较好... 淘宝颜色分类为什么只有24种颜色? Photoshop设计花朵为主元素的报纸广告 PS制作致命吸引力的燃烧玫瑰 ps中怎么制作花卉字母穿插海报 碎片整理二、磁盘碎片是怎么产生的? 美国自由女神纪念币2022生肖纪念币发行(美国自由女神像银币表价格) 为什么自由女神总是站在纽约港答案:因为她蹲不下去猜一生肖 摇蓝的原义是什么 用词语的不同意思写句子。摇篮(原义) 摇篮(比喻义) ...1.明朗(光线充足): 2.明朗(明显、清晰): 3.摇篮(原义): 4... 用PS的钢笔工具快速抠出植物 创意人像用PS添加创意的花朵人物头像 如何设置路由器IP地址为自动获取 补血功能障碍是什么病 我的骨髓报告单有何不正常呀? ps用滤镜制作绚丽的抽丝花朵 java.lang.IllegalStateException: Failed to load ApplicationContext... ...org.apache.catalina.core.ApplicationContext log ...弄在个性名片的中间,不是圈圈的那种,也不是拼图的那种,,如图所示_百... 学车的时候如何避免被老是骂? 请问这个怎么设置?好像叫个性标签什么的..头像周围的东西. 请问一下,为什么有的人qq上的主页资料上叫人把那个圆圈都拖到他的... ...帮忙告诉下,苏州的各个区和县以什么见长呀?比如:吴中区经济区。_百... 天国车站电影 现在跑跑卡丁车还好玩吗 《红楼梦》第3回和第198回中关于林黛玉的外貌描写。 哪里有卖《脂研斋重评红楼梦甲戊本》的? 龙湖村车牌号是多少 95559交通银行电话 交通银行拨打什么电话 阿迪达斯有这么一款鞋吗? 小雪后如何养虎皮兰侧芽蹿不停 小雪后养虎皮兰侧芽蹿不停的方法 创造与魔法冰龙草获取攻略 创造与魔法冰龙草在哪_创造与魔法冰龙草位置一览 如何判断瓷砖辐射 如何鉴定瓷砖辐射