mapper mysql 主键_实现通用mapper主键策略兼容mysql和oracle
【原创文章,转载请注明原文章地址,谢谢!】
1.直接用官方提供的注解方法是无法达到兼容效果的
2.跟踪源码看看是否有其他方法
3.这里有个genSql,可以看一下这个类
4.创建一个自定义的处理类实现GenSql(代码中是我实际项目中用到的策略,部分代码可以忽略)
package com.wisedu.common.handle;
import com.wisedu.common.utils.EnvironmentUtil;
import com.wisedu.common.utils.StringUtils;
import lombok.Data;
import tk.mybatis.mapper.code.ORDER;
import tk.mybatis.mapper.entity.EntityColumn;
import tk.mybatis.mapper.entity.EntityTable;
import tk.mybatis.mapper.gensql.GenSql;
import javax.persistence.Table;
/**
* @Author meiwenjun
* @Description 主键策略handle
* @Date 2020/3/5
*/
@Data
public class GenSqlHandle implements GenSql {
@Override
public String genSql(EntityTable entityTable, EntityColumn entityColumn) {
if (StringUtils.isNotEmpty(EnvironmentUtil.getEnvironment())) {
Class> entityClass = entityTable.getEntityClass();
if (!entityClass.isAnnotationPresent(Table.class)) {
throw new RuntimeException(entityClass.getName() + "[email protected]");
}
String environment = EnvironmentUtil.getEnvironment();
if (environment.contains("oracle")) {
entityColumn.setOrder(ORDER.BEFORE);
// entityColumn.setUseJavaType(true);
//获取表名
Table classAnnotation = entityClass.getAnnotation(Table.class);
//拼接序列名称
String sequenceName = StringUtils.substringAfter(classAnnotation.name().toLowerCase(), "pms_") + "_seq";
return "SELECT " + sequenceName + ".nextval from dual";
} else {
entityColumn.setOrder(ORDER.AFTER);
return "SELECT LAST_INSERT_ID()";
}
}else {
throw new RuntimeException("获取环境变量失败");
}
}
}
5.POJO类中可以用以下注解即可(@KeySql(gensql = GenSqlHandle.class)
@Id
@KeySql(genSql = GenSqlHandle.class)
private Integer id;
mapper mysql 主键_实现通用mapper主键策略兼容mysql和oracle相关推荐
- java mysql geometry,扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper...
扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper 因项目中需要用到地理位置信息的存储.查询.计算等,经过研究决定使用mysql(5.7版本) ...
- mybatis mysql 乐观锁_基于tx.mapper实现的mysql乐观锁
1.表CREATE TABLE `demo` ( `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '物理主键', `demo_id` varchar(3 ...
- java example使用_关于通用 Mapper Example 使用记录
环境准备项目整合 通用 mapper 和 pagehelper 插件,这部分以前有写过,略 需要集成 mybatis 的 generator 插件,方便自动生成 实体类和 mapper 类,还可以生成 ...
- 中去掉外键_【Java笔记】035天,MySQL中的增删改查
学习Java的第35天. 今天天除了学习MySQL中的各种约束,MySQL中DML的操作,还有MySQL查询语句ds-- MySQLdz中d的约束有: • 非空约束(not null) • 唯一性约束 ...
- mysql 图形界面外键_关于使用可视化图形工具navicat for mysql来创建外键的步骤
主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...
- sql 复合主键 联合主键_学习SQL:主键
sql 复合主键 联合主键 If you've already worked with databases, then you could hardly miss the term – Primary ...
- mysql更新加锁_一条简单的更新语句,MySQL是如何加锁的?
看如下一条sql语句: #tableT(idint,namevarchar(20))deletefromTwhereid=10: MySQL在执行的过程中,是如何加锁呢? 再看下面这条语句: sele ...
- mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题
MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储.锁.磁盘寻道.分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后 ...
- mysql拉荐_荐 一步一步教你MySQL主从复制读写分离
本次我们通过docker搭建环境 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步 ...
最新文章
- Windows下Python环境搭建
- (chap3 数据链路) 介质型网络
- Python初学的几个迷惑点
- 线性时间排序--桶排
- 利用 VMware vRealize - 构建和优化云管理
- 前端学习(2446):总页码的处理
- Summed-Area Variance Soft Shadow Mapping(SAVSM):一
- 读取 Excel 之 Epplus
- 括号配对问题http://acm.nyist.net/JudgeOnline/problem.php?pid=2
- printf利用转译字符在终端显示进度条(时钟)-zhuan
- python执行oracle的sql语句_在oracledb中执行SQL脚本一次执行一条语句
- uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
- SharePoint 2010列表中新增的唯一性验证
- 【Pygame实战】超有趣的泡泡游戏来袭——愿你童心不泯,永远快乐简单哦~
- 浅谈各大搜索引擎蜘蛛
- Idea设置豆沙绿(保护你的眼不瞎的密码)
- 重装系统后Win10无故关机解决
- 众享比特 2018 LC3大会分享:如何基于Fabric实现供应链金融平台系统?
- (转)世界上最美丽的英文
- 《快递查询-您身边的快递助手-隐私协议》