为什么使用缓存?首次访问时,查询数据库,并将数据存储到内存中;再次访问时直接访问缓存,减少IO、硬盘读写次数、提高效率Mybatis中的一级缓存和二级缓存?一级缓存:它指的是mybatis中的SqlSession对象的缓存。当我们执行完查询之后,查询的结果会同时存在在SqlSession为我们提供的一块区域中。当我们再次查询同样的数据,mybatis会先去SqlSession中查询是否有,有的话直接拿出来使用。当SqlSession对象消失时,Mybatis的一级缓存也就消失了。二级缓存:它指的是Mybatis中SqlSessionFactory对象的缓存,由同一个SqlSessioFacto
文章目录前言注解方式书写MyBatis打印MyBatis日志参数传递MyBatis增加操作返回主键MyBatis删除操作MyBatis修改操作MyBatis查找操作1.对查询结果进行别名2.@Results注解3.开启驼峰命名(推荐)XML配置文件方法书写MyBatis配置数据库的相关配置指定XML的文件路径xml实现增加操作删除操作修改操作查找操作1.别名2.定义result3.开启驼峰命名前言前面我们学习了什么是MyBatis,为什么要使用MyBatis,如何创建MyBatis环境,并且了解了使用单元测试对代码功能进行测试。那么今天这篇文章将为大家分享关于MyBatis的基础操作。书写My
问题现象:在进行接口性能测试时,发现一个查询详情的接口反应速度在10s左右,日志打印定位到一条sql执行执行很慢,于是将sql复制到终端执行,执行速度100ms左右。使用数据库:pgsql,数据量100w示例代码:select*fromtable_aajointable_bbona.project_no=b.project_noanda.id=#{id}解决方案:①将#替换为$,使用此方法可能导致sql注入 ②将mapper层查询方法入参从String类型更改为Long类型,并增加#{id,jdbcType=BIGINT}问题原因:mybatis#替换是使用预编译
依赖dependency> groupId>org.mybatis.spring.bootgroupId> artifactId>mybatis-spring-boot-starterartifactId> version>2.1.1version>dependency>dependency> groupId>org.springframework.bootgroupId> artifactId>spring-boot-starter-jdbcartifactId>dependency>dependency> groupId>org.springframework.bootgroupId> a
目录一.Sring项目中关于MyBatis的配置1.在pom.xml中引入框架依赖2.配置文件配置相关信息 3.设置mapper中的xml文件内容4.根据以上配置实现的查询示例(1)添加实体类(2)添加mapper接口(3)添加UserMapper.xml(4)server层的调用(5)controller层的调用(6)前端访问后端路径二.有关mybatis中xml对于数据库操作的具体使用1.插入操作2.删除操作3.修改操作4.查询操作 三.Mybatis进阶操作1.参数占位符2.like查询3.多表查询(1)一对一查询(2)一对多查询 4.动态查询(if,trim,where,set,for
引言:mybatis-plus集合对象字段json如何自动进行相互的转换?怎样在使用mybatis-plus操作数据表的时候自动对实体类属性进行自动解析?文章目录前言一、@TableField是什么?二、@TableField使用三、自定义复杂对象的处理1.先看下JacksonTypeHandler是怎么处理简单json对象的:2.模仿JacksonTypeHandler来进行自定义字段类型解析器:MyFieldTypeHandler总结前言我们平时在做开发的时候,会遇到一个字段保存json串的情况。一般情况下mybatis-plus在做插入/更新之前将对象手动转换成json串,查询要用的时候
1.多表映射概念MyBatis思想是:数据库不可能永远是你所想或所需的那个样子。我们希望每个数据库都具备良好的第三范式或BCNF范式,可惜它们并不都是那样。如果能有一种数据库映射模式,完美适配所有的应用程序查询需求,那就太好了,而ResultMap就是MyBatis就是完美答案。官方例子:我们如何映射下面这个语句?selectid="selectBlogDetails"resultMap="detailedBlogResultMap">selectB.idasblog_id,B.titleasblog_title,B.author_idasblog_author_id,A.idasauthor
1、导入依赖 com.mysqlmysql-connector-j8.1.0org.mybatis.spring.bootmybatis-spring-boot-starter2.1.4com.alibabadruid-spring-boot-starter1.2.16导入依赖的时候,需要根据自己所使用的SpringBoot和MySQL的版本而定。2、创建数据库我这里使用的是MySQL数据库。首先创建一个mybatis_learn的数据库。然后创建一个student的表。CREATETABLE`student`(`id`intNOTNULL,`name`varchar(20)NOTNULL,
1、导入依赖 com.mysqlmysql-connector-j8.1.0org.mybatis.spring.bootmybatis-spring-boot-starter2.1.4com.alibabadruid-spring-boot-starter1.2.16导入依赖的时候,需要根据自己所使用的SpringBoot和MySQL的版本而定。2、创建数据库我这里使用的是MySQL数据库。首先创建一个mybatis_learn的数据库。然后创建一个student的表。CREATETABLE`student`(`id`intNOTNULL,`name`varchar(20)NOTNULL,
前言:这里我列举了MyBatis和MyBatis-Plus常用的五种批量插入的方式,进行了详细的总结归纳,写的非常详细,整体思路清晰明了,只分享干货。目录一、准备工作二、MyBatis利用For循环批量插入三、MyBatis的手动批量提交四、MyBatis以集合方式批量新增(推荐)五、MyBatis-Plus提供的SaveBatch方法六、MyBatis-Plus提供的InsertBatchSomeColumn方法(推荐)七、总结一、准备工作1、导入pom.xml依赖mysqlmysql-connector-javaruntimeorg.mybatis.spring.bootmybatis-s