草庐IT

Mybatis-Generator

全部标签

MyBatis:MyBatis一二级缓存,你学会了吗?

一、一级缓存1、在⼀个sqlSession中,对User表根据id进行两次查询,查看他们发出sql语句的情况。2、同样是对user表进⾏两次查询,只不过两次查询之间进⾏了⼀次update操作。3、总结(1)第⼀次发起查询⽤户id为1的⽤户信息,先去找缓存中是否有id为1的⽤户信息,如果没有,从数据库查询⽤户信息。得到⽤户信息,将⽤户信息存储到⼀级缓存中。(2)如果中间sqlSession去执⾏commit操作(执⾏插⼊、更新、删除),则会清空SqlSession中的⼀级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。(3)第⼆次发起查询用户id为1的⽤户信息,先去找缓存中是否有id

mybatis-plus技巧--动态表名-多语句-拼接sql--关于mybatis的mysql分页查询总数的优化思考

文章目录动态表名xml表名填充表名拦截器每天按统计每次设置多语句操作forEach动态拼接参数构建java进行拼接sqlmysql分页查询总数count不要使用count(常数),count(列名)代替count(*)自己计数SQL_CALC_FOUND_ROWSxml单条接口实现mybatis拦截器动态表名xml表名填充select>select*from${tableName}select>传入tableName参数就可以了,不过只能用$不能用#因为#会发生预编译,然后会在表名上加引号’'。表名拦截器新建一个表名拦截类实现TableNameHandler@Componentpubliccl

Mybatis 拦截器实现单数据源内多数据库切换 | 京东物流技术团队

物流的分拣业务在某些分拣场地只有一个数据源,因为数据量比较大,将所有数据存在一张表内查询速度慢,也为了做不同设备数据的分库管理,便在这个数据源内创建了多个不同库名但表完全相同的数据库,如下图所示:现在需要上线报表服务来查询所有数据库中的数据进行统计,那么现在的问题来了,该如何 满足在配置一个数据源的情况下来查询该数据源下不同数据库的数据 呢,借助搜索引擎查到的分库实现大多是借助Sharding-JDBC框架,配置多个数据源根据分库算法实现数据源的切换,但是对于只有一个数据源的系统来说,我觉得引入框架再将单个数据源根据不同的库名配置成多个不同的数据源来实现分库查询的逻辑我觉得并不好。如果我们能在

Mybatis 拦截器实现单数据源内多数据库切换 | 京东物流技术团队

物流的分拣业务在某些分拣场地只有一个数据源,因为数据量比较大,将所有数据存在一张表内查询速度慢,也为了做不同设备数据的分库管理,便在这个数据源内创建了多个不同库名但表完全相同的数据库,如下图所示:现在需要上线报表服务来查询所有数据库中的数据进行统计,那么现在的问题来了,该如何 满足在配置一个数据源的情况下来查询该数据源下不同数据库的数据 呢,借助搜索引擎查到的分库实现大多是借助Sharding-JDBC框架,配置多个数据源根据分库算法实现数据源的切换,但是对于只有一个数据源的系统来说,我觉得引入框架再将单个数据源根据不同的库名配置成多个不同的数据源来实现分库查询的逻辑我觉得并不好。如果我们能在

Spring Boot 2+MyBatis+Docker+Elasticsearch微服务商城源码分享

项目介绍mall学习教程,架构、业务、技术要点全方位解析。mall项目是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot2.1.3、MyBatis3.4.6、Elasticsearch6.2.2、RabbitMQ3.7.15、Redis5.0、Mongodb4.2.5、Mysql5.7等技术,采用Docker容器化部署。(附带全套SpringCloud教程,有需要的小伙伴在文末查看免费领取方式)组织结构mall├──mall-common--工具类及通用代码模块├──mall-mbg--MyBatisGenerator生成的数据库操作代码模块├──mall-security--

Mybatis-Plus使用Wrapper自定义SQL

文章目录准备工作Mybatis-Plus使用Wrapper自定义SQL注意事项目录结构如下所示domain层Controller层Service层ServiceImplMapper层UserMapper.xml结果如下所示:单表查询条件构造器单表查询,Mybatis-Plus使用Wrapper自定义SQL联表查询不用,Mybatis-Plus的条件构造器时联表查询,Mybatis-Plus使用Wrapper自定义SQL总结简要说明:Mybatis-Plus使用Wrapper自定义SQL,主要的代码说明,详情可以往后看。假设有三张表(这三张表在:SpringBoot整合mybatis-plus-

单元测试实战(四)MyBatis-Plus 的测试

为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。本文中的测试均基于JUnit5。单元测试实战(一)Controller的测试单元测试实战(二)Service的测试   单元测试实战(三)JPA的测试单元测试实战(四)MyBatis-Plus的测试单元测试实战(五)普通类的测试单元测试实战(六)其它概述MyBatisPlus组件表现为Mapper对象(我们将不涉及IService的测试)。使用MyBatis/MyBatis-Plus的项目,往往有很多自写的SQL需要测试。MyBatisPlus有专门的@MyBatisPlusTest注解,是苞米豆提供的功能,它是有Sp

代码生成神器mybatis-plus-generator-ui

1、mybatis-plus-generator-ui是什么?1.1、介绍它是对mybatis-plus-generator进行封装,通过WebUI快速生成兼容Springboot,mybatis-plus框架的各类业务代码。提供交互式的WebUI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity、Mapper、Mapper.xml、Service、Controller等,可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。1.2、功能列表:Table查询:查询配置的关系型数据库表的列表查询。输出配置:对需要生成的相关代码,比如Entity、Mapper、

MyBatis的缓存!!!!

为什么使用缓存?首次访问时,查询数据库,并将数据存储到内存中;再次访问时直接访问缓存,减少IO、硬盘读写次数、提高效率Mybatis中的一级缓存和二级缓存?一级缓存:它指的是mybatis中的SqlSession对象的缓存。当我们执行完查询之后,查询的结果会同时存在在SqlSession为我们提供的一块区域中。当我们再次查询同样的数据,mybatis会先去SqlSession中查询是否有,有的话直接拿出来使用。当SqlSession对象消失时,Mybatis的一级缓存也就消失了。二级缓存:它指的是Mybatis中SqlSessionFactory对象的缓存,由同一个SqlSessioFacto

【MyBatis】MyBatis基础操作

文章目录前言注解方式书写MyBatis打印MyBatis日志参数传递MyBatis增加操作返回主键MyBatis删除操作MyBatis修改操作MyBatis查找操作1.对查询结果进行别名2.@Results注解3.开启驼峰命名(推荐)XML配置文件方法书写MyBatis配置数据库的相关配置指定XML的文件路径xml实现增加操作删除操作修改操作查找操作1.别名2.定义result3.开启驼峰命名前言前面我们学习了什么是MyBatis,为什么要使用MyBatis,如何创建MyBatis环境,并且了解了使用单元测试对代码功能进行测试。那么今天这篇文章将为大家分享关于MyBatis的基础操作。书写My