Mybatis-Plus

mybatis采坑记及源码分析

╄→гoц情女王★ 提交于 2020-10-28 12:05:31
问题描述 有些需求,需要把上一步批量操作返回的主键作为下个表的关联使用,这个时候用mybatis批量操作,mybatis批量操作有些版本不能返回主键,只能一个一个的插入,这样就降低了效率。 问题跟踪 跟踪1 mybatis的主线版本,能够正确返回主键id,主线版本修复了这个问题,并且@Param可以自定义命名 可以自己自定义集合属性名字 执行成功并返回主键id 跟踪2 mybais的3.3.x-3.4.x源码里面判断参数的属性,并设值 br/>在这些版本是修复了这个问题,但是还有限制,@Param只能是list或者是colletions或者是array才能返回id 接口方法里面的属性必须是list或者是colletions或者是array才能返回id 批量保存方法for里面的属性是list 跟踪3 项目如果用mybatis-plus,MybatisDefaultParameterHandler类已经处理了这种情况,如果是自定义的参数会转换成map,然后根据map再进行转换 获得参数之后,进行换行处理 获取主键属性,进行设值 总结 1、有时候出现问题得查看历史版本,并从提交问题单中找到解决的办法, 2、没有解决的方案,就重写框架代码,比如mybatisplus就是重写了ParameterHandler来进行参数的进一步处理。 3、在项目中如果确实没有好的解决办法,那就暂时放下

Mybatis Plus多租户

烈酒焚心 提交于 2020-10-28 10:29:39
/** * 分页 * @return */ @Bean public PaginationInterceptor paginationInterceptor(){ PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); ArrayList<ISqlParser> sqlParserList = new ArrayList<ISqlParser>(); TenantSqlParser tenantSqlParser = new TenantSqlParser(); tenantSqlParser.setTenantHandler(new TenantHandler() { @Override public Expression getTenantId(boolean where) { return new LongValue(79657654768L); } @Override public String getTenantIdColumn() { return "parent_id"; } @Override public boolean doTableFilter(String tableName) { //表示role表不是多租户 if("role".equals(tableName)

ShardingSphere-ShardingJdbc 读写分离

廉价感情. 提交于 2020-10-27 11:59:06
一、读写分离背景 分库分表虽然可以优化数据库操作,但是要实现高并发,主从架构就应运而生了。数据库的主从复制架构,将数据库的写操作定位到主库中进行,主库和从库之间通过异步复制、半同步复制保持数据一致。所有的读操作都在主库的N个从库上进行。通过负载均衡使得每一次查询均匀的落在每一个从库上。 一主n从,做读写分离(数据写入主库,通过mysql数据同步机制将主库数据同步到从库–>程序读取从库数据),多个从库之间可以实现负载均衡。次外,ShardingSphere-ShardingJdbc可手动强制部分读请求到主库上。(因为主从同步有延迟,对实时性要求高的系统,可以将部分读请求也走主库) MySQL配置主从同步可参考另一篇博客: https://blog.csdn.net/u014553029/article/details/108832268 二、读写分离实现 2.1 环境准备 程序环境:SpringBoot+MyBatis-plus 数据库环境: 数据库ip 数据库 作用 127.0.0.1 ShardingSphere master 127.0.0.1 ShardingSphere1 slave1 127.0.0.1 ShardingSphere2 slave2 2.2 添加ShardingSphere依赖 <!--shardingsphere数据分片、脱敏工具-->

还在从零开始搭建项目?手写了款快速开发脚手架

不羁岁月 提交于 2020-10-27 00:54:54
之前开源了一款项目骨架mall-tiny,完整继承了mall项目的整个技术栈。总感觉mall-tiny集成了太多中间件,过于复杂了。这次对其进行了简化和升级,使它成为了一款拥有完整权限管理功能的快速开发脚手架,希望对大家有所帮助! 简介 mall-tiny 是一款基于SpringBoot+MyBatis-Plus的快速开发脚手架,拥有完整的权限管理功能,可对接Vue前端,开箱即用。 项目演示 mall-tiny 项目可无缝对接 mall-admin-web 前端项目,秒变权限管理系统。 技术选型 数据库表结构 化繁为简,仅保留了权限管理功能相关的9张表,方便自由定制; 使用流程 环境搭建 简化依赖服务,只需安装最常用的MySql和Redis服务即可,数据库中需要导入 mall_tiny.sql 脚本。 开发规约 项目包结构 src ├── common -- 用于存放通用代码 | ├── api -- 通用结果集封装类 | ├── config -- 通用配置类 | ├── domain -- 通用封装对象 | ├── exception -- 全局异常处理相关类 | └── service -- 通用业务类 ├── config -- SpringBoot中的Java配置 ├── domain -- 共用封装对象 ├── generator -- MyBatis

spring boot 集成mybatis后扫描不到xml文件,invalid bound statement (not found) mybatis puls 扫描不到 xml

无人久伴 提交于 2020-10-24 17:15:15
*mapper.xml文件默认存放目录resources下(目录必须跟*mapper.java目录一样的xml目录).或者直接在*mapper.java接口上用注解不用扫描xml。 首先查看mapper接口跟mapper.xml的映射关系,包括namespace、方法名等。 检查mapper-locations是否配置正确,如mapper-locations: classpath:com/springdome/* /mapper/ .xml # 如果是mybatis-plus在 application.yml设置,如果是多项目classpath* 加* mybatis-plus: mapper-locations: classpath*:com/*/dao/mapper/*.xml 如果以上都正确,且mapper文件放在src/main/java下,则在pom.xml中加入 <build> <finalName>spring-boot-demo-rbac-shiro</finalName> <plugins> <plugin> <groupId>。。。</groupId> <artifactId>。。。</artifactId> </plugin> </plugins> 以下是添加内容 <resources> <resource> <directory>src/main/java<

Mybatis-Plus的使用!

北城以北 提交于 2020-10-19 18:15:59
Mybatis-Plus 一、特性 二、使用步骤 1、创建数据库 mybatis_plus,创建表 2、创建SpringBoot项目! 3、导入依赖 4、配置 5、建实体类 6、mapper接口 7、入口类扫描dao 三、配置日志 四、CRUD扩展 1、插入操作 2、主键生成策略 3、更新操作 4、自动填充 1. 方式一:数据库级别(工作中不允许你修改数据库) 2. 方式二:代码级别 5、乐观锁 测试一下MP的乐观锁插件 6、查询操作 7、分页查询 8、删除操作 9、逻辑删除 10、性能分析插件 11、条件构造器 12、代码自动生成器 感谢B站up主【狂神说Java】原文,有学习的伙伴可以看这位up主! 一、特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作, BaseMapper 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求, 以后简单的CRUD操作,它不用自己编写 了! 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence)

MyBatis-plus配置和测试微服务基本CRUD

眉间皱痕 提交于 2020-10-16 08:43:17
一 整合MyBatis-Plus 1 导入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> 2 配置 2.1 配置数据源 a 导入数据库的驱动。 <!-- 导入mysql驱动 --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency> 版本对应关系: https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html b 在application.yml配置数据源相关信息 spring: datasource: username: root password: root url: jdbc:mysql://192.168.0.110:3306

懒人神器,代码生成

一世执手 提交于 2020-10-13 04:27:16
====================生成代码的代码controller\service\mapper\sql============================ package com.spboot.spbootstudy ; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException ; import com.baomidou.mybatisplus.core.toolkit.StringPool ; import com.baomidou.mybatisplus.core.toolkit.StringUtils ; import com.baomidou.mybatisplus.generator.AutoGenerator ; import com.baomidou.mybatisplus.generator.InjectionConfig ; import com.baomidou.mybatisplus.generator.config. *; import com.baomidou.mybatisplus.generator.config.po.TableInfo ; import com.baomidou.mybatisplus.generator.config.rules

如何使用Nacos实现数据库自动容灾?

泄露秘密 提交于 2020-10-06 02:05:37
为什么使用nacos? Nacos作为参数配置中心,可以使服务在不重启的情况下动态修改配置参数。官网的描述更加详细点 nacos动态配置服务 ,部分如下: 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。 配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。 Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。 客户端如何监听nacos服务器配置的更新? 客户端使用http方式post请求,采用长轮询的方式,判断nacous服务器配置是否有更新。在nacos服务器端,采用队列存储客户端的请求,任务调度定时执行客户端的请求;当Nacos修改配置后,nacos服务器端会从队列中读取客户端的请求配置,并且立即把修改的配置写入返回给请求的客户端,配置的更改在客户端就立即生效,可以参考 Nacos 配置实时更新原理分析 。 在 Spring Cloud 中,在 Environment 的属性配置发生变化时,会发布

SpringBoot + mybatis-plus搭建过程

旧巷老猫 提交于 2020-10-04 11:53:47
一、创建项目 1.File->new->project; 2.选择“Spring Initializr”,点击next;(jdk1.8默认即可) 3.完善项目信息 组名可不做修改,项目名可做修改;最终建的项目名为:test,src->main->java下包名会是:com->example->test;点击next; 4.Web下勾选Spring Web Start ,(网上创建springboot项目多是勾选Web选项,而较高版本的Springboot没有此选项,勾选Spring Web Start即可,2.1.8版本是Spring Web);Template Englines勾选Thymeleaf;SQL勾选:MySQL Driver,JDBC API 和 MyBatis Framework三项;点击next; 5.选择项目路径,点击finish;打开新的窗口; 6.刚创建好的项目目录结构 7.点击右侧的Maven,点击设置(扳手图标)进行项目Maven仓库的配置; 8.配置maven (1)选择本地Maven路径;(2)勾选配置文件后边的选项,然后修改为本地Maven的配置文件,它会根据配置文件直接找到本地仓库位置; 9.配置完后,如果没有自动导包,可以点击左上角重新导包按钮,或者呢个下载按钮,选择下载所有源文件和文档 10.在templates文件下新建index