
Mybatis-Plus
文章平均质量分 79
Mybatis相关知识
懒虫虫~
无论人生上到哪一层台阶,阶下有人在仰望你,阶上亦有人在俯视你。你抬头自卑,低头自得,唯有平视,才能看见真实的自己!
展开
-
SQL高可用优化-优化SQL中distinct和Where条件对索引字段进行非空检查语句
最近做一个需求,关于SQL高可用优化,需要优化项目中的SQL,提升查询效率。原创 2024-09-28 00:52:22 · 667 阅读 · 0 评论 -
自定义对象池BasePooledObjectFactory的使用
System.out.println("ThreadName:" + Thread.currentThread().getName() + " 对象:" + name + "正在被创建。。。。。。");System.out.println("ThreadName:" + Thread.currentThread().getName() + " 对象:" + name + "正在被销毁。。。。。。");原创 2024-06-01 00:21:51 · 890 阅读 · 1 评论 -
多线程事务怎么回滚?
在Spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效。如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。通过使用sqlSession控制手动提交事务,可以达到主线程和子线程数据事务回滚。原创 2023-08-13 17:54:49 · 887 阅读 · 1 评论 -
Mybatis实现JsonObject对象与JSON之间交互
项目中使用PostGresql数据库进行数据存储,表中某字段为Json类型,用于存储Json格式数据。PG数据库能够直接存储Json算是一大特色,很多特定情境下使用直接存储Json字段数据能够大量节省开发时间,提高后台数据查询和转换效率。原创 2023-08-04 06:07:35 · 1972 阅读 · 0 评论 -
MyBatis何时使用一级缓存,何时使用二级缓存?
Mybatis设计2级缓存来提升数据检索效率,避免每次都查询数据库。原创 2023-06-24 14:17:54 · 1869 阅读 · 0 评论 -
SpringBoot自定义Mybatis拦截器实现扩展功能(比如数据权限控制)
实际工作中,使用Mybatis拦截器可以做一些数据过滤、数据加密脱敏、SQL执行时间性能监控和告警等业务。MyBatis拦截器默认可以拦截的类型只有四种,即四种接口类型Executor、StatementHandler、ParameterHandler和ResultSetHandler。对于我们的自定义拦截器必须使用MyBatis提供的@Intercepts注解来指明我们要拦截的是四种类型中的哪一种接口。原创 2023-03-17 23:05:42 · 1146 阅读 · 1 评论 -
最近项目中的一次SQL查询数据缓慢优化的一点总结
当数据量增多之后,多表关联查询,又增加了模糊查询条件,导致查询缓慢,由于是微服务项目,服务之间调用超时,从而引起连接超时异常,导致服务不可用!一、优化方案1、将SQL拆分、分2次查询2、将两次查询的结果,重新进行封装组合原始SQL如下<select id="getUserGroupPage" resultType="com.xxx.service.api.response.CmsUserGroupResp"> select原创 2022-02-17 19:58:09 · 865 阅读 · 0 评论 -
SpringBoot+Mybatis-Plus多数据源使用
在实际开发中项目很容易就遇到使用多数据源的情形,比如:在新增数据时除了给自己的库保留一份,还需要同步到别人的库;转移程序需要将A库的数据转到B库等等。。这里介绍下mybatis-plus-dynamic的使用。原创 2022-10-03 15:56:56 · 6689 阅读 · 0 评论 -
MySQL乐观锁解决库存超卖问题
在通过多线程来解决高并发的问题上,线程安全往往是最先需要考虑的问题,其次才是性能。库存超卖问题是有很多种技术解决方案的,比如悲观锁,分布式锁,乐观锁,队列串行化,Redis原子操作等。本篇通过MySQL乐观锁来演示基本实现。一、Goods和Order@Datapublic class Goods { private int id; private String name; private int stock; private int version;}@Data原创 2022-04-21 20:45:00 · 3712 阅读 · 1 评论 -
Mybatis-Plus之多租户插件TenantLineInnerInterceptor及动态表名插件DynamicTableNameInnerInterceptor
一、多租户多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。通过在多个租户之间的资源复用,运营管理维护资源,有效节省开发应用的成本。多租户技术的实现重点,在于不同租户间应用程序环境的隔离(appli原创 2022-01-28 09:59:41 · 11785 阅读 · 5 评论 -
Mybatis-Plus 乐观锁插件OptimisticLockerI及逻辑删除及防全局删除和更新
当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:1:取出记录时,获取当前 version2:更新时,带上这个 version 执行更新时, set version = newVersionwhere version = oldVersion 如果 version 不对,就更新失败一、乐观锁插件实现步骤:1、配置插件@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusIn原创 2022-01-14 23:00:00 · 1108 阅读 · 1 评论 -
Mybatis-Plus实现分页查询功能Demo
一、Mybatis实现方式如下:@Datapublic class PagingResult<E> implements Serializable { private static final long serialVersionUID = -4925664861534366008L; private int count; private int current; private int pageSize; private List<E>原创 2022-01-07 19:45:00 · 1056 阅读 · 0 评论 -
Mybatis实现数据库交互的原理
Mybatis实现数据库交互的原理一、JDBC二、反射+jdk动态代理MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。一、JDBCJava语言访问数据库的一种规范,是一套API。JDBC (Java原创 2021-10-12 20:00:00 · 4231 阅读 · 0 评论 -
SpringBoot整合Mybatis-Plus----多表关联查询(使用注解)
多表关联查询(使用注解)一、创建两张表二、编写实体类三、使用 @One 注解实现一对一关联四、使用 @Many 注解实现一对一关联五、Controller层六、测试继续在 SpringBoot整合Mybatis-Plus 基础上修改项目一、创建两张表用户表(User)、区域表(Area),其中用户表里通过 area_id 字段关联区域表的 id 主键二、编写实体类Userpackage org.spring.springboot.entity;import com.baomidou.原创 2021-10-09 20:45:00 · 48819 阅读 · 3 评论 -
SpringBoot整合Mybatis-Plus
SpringBoot整合Mybatis-Plus一、配置文件二、实体类三、业务代码四、执行结果五、项目结构六、BaseMapper接口Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段。一、配置文件pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.or原创 2021-10-08 22:30:00 · 836 阅读 · 0 评论 -
SpringBoot+Mybatis关联查询多表数据拼接结果集
SpringBoot+Mybatis关联查询多表数据集一、需求描述二、项目代码三、测试一、需求描述sys_column_role的id跟sys_column_role_permission的column_role_id关联需要查询结果集1的所有数据,并且也要关联出结果集2的item_text数据结果集1 SELECT [id] ,[role_name] ,[role_code] ,[description] from dbo.sys_column_role原创 2021-09-30 14:50:51 · 3112 阅读 · 0 评论 -
Mybatis的执行流程
Mybatis的执行流程如下代码第一步:通过Resources加载配置文件Mybatis.xmlResources是ibatis.io下的IO流,用于读写文件,通过getResourceAsStream把xml文件加载进来,把配置文件解析为一个流。第二步:获取SqlSessionFactory首先new了一个SqlSessionFactoryBuilder对象,他是SqlSessionFactory的构建者。我们调用了他的build()方法。这个方法长什么样子呢?看一下他的源码:我们发现里面有转载 2021-09-01 22:24:42 · 465 阅读 · 0 评论 -
Mybatis-BaseTypeHandler实现数据层数据加解密
需求:数据库保存的数据需要加密,然后查询的时候解密解决方案:继承BaseTypeHandler,然后重写具体的set、get方法。本文加解密使用了Base64算法。一、创建实体类studentpackage org.spring.springboot.entity;public class Student { private Integer id; private String name; private String course; private String score; @O原创 2021-07-06 18:49:31 · 2631 阅读 · 4 评论 -
Spring整合Mybatis方式二
在Spring整合Mybatis方式一的基础上通过SQLSessionDaoSupport方式实现另一种方式完成整合。1、UserMapperImpl2.javapackage com.zhang.mapper;import com.zhang.pojo.User;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;public class UserMapperImpl2 extends Sq原创 2021-05-03 22:40:12 · 95 阅读 · 0 评论 -
Spring整合Mybatis方式一
1、Userpackage com.zhang.pojo;import lombok.Data;@Datapublic class User { private int id; private String name; private String pwd;}2、UserMapper.javapackage com.zhang.mapper;import com.zhang.pojo.User;import java.util.List;public原创 2021-05-03 22:11:53 · 134 阅读 · 1 评论 -
Mybatis的动态SQL语句及原理
项目目录动态 SQL 之if标签持久层 Dao 接口/** * 根据传入的参数条件 * @param user 查询的条件,有可能有用户名 ,性别,或都没有 * @return */List<User> finduserCondition(User user);持久层 Dao 映射配置<!--根据条件查询--><select id="finduserCondition" resultMap="userMap" parameterType="user"&转载 2021-02-14 10:19:35 · 463 阅读 · 0 评论 -
Mybatis原理分析
MyBatis的工作原理以及核心流程详解MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。JDBC有四个核心对象:(1)DriverManager,用于注册数据库连接。(2)Connection,与数据库连接对象。(3)Statement/PrepareStatement,操作数据库SQL语句的对象。(4)ResultSet,结果集或一张虚拟表。MyBatis也有四大核心对象:(1)SqlSession对象,该对象中包含了执原创 2021-01-05 16:25:21 · 1656 阅读 · 0 评论 -
SpringBoot+Mybatis+Mysql用法Demo
本文基于SpringBoot+Mybatis+Mysql5.5完成了一个简单Demo,实现了基本CRUD功能。开发工具为Eclipse。一:利用Eclipse创建一个Maven功能,创建方法为Eclipse创建Maven工程二:修改pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org原创 2020-07-17 19:13:13 · 3882 阅读 · 0 评论 -
Mybatis常见面试题总结
1、什么是Mybatis?(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。(2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。(3)通过xml 文件或注解的方式将要执行的各种 stateme转载 2020-09-19 15:28:35 · 203 阅读 · 0 评论