【原创文章,转载请注明原文章地址,谢谢!】

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相关推荐

  1. java mysql geometry,扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper...

    扩展mybatis和通用mapper,支持mysql的geometry类型字段,mybatis用mapper 因项目中需要用到地理位置信息的存储.查询.计算等,经过研究决定使用mysql(5.7版本) ...

  2. mybatis mysql 乐观锁_基于tx.mapper实现的mysql乐观锁

    1.表CREATE TABLE `demo` ( `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '物理主键', `demo_id` varchar(3 ...

  3. java example使用_关于通用 Mapper Example 使用记录

    环境准备项目整合 通用 mapper 和 pagehelper 插件,这部分以前有写过,略 需要集成 mybatis 的 generator 插件,方便自动生成 实体类和 mapper 类,还可以生成 ...

  4. 中去掉外键_【Java笔记】035天,MySQL中的增删改查

    学习Java的第35天. 今天天除了学习MySQL中的各种约束,MySQL中DML的操作,还有MySQL查询语句ds-- MySQLdz中d的约束有: • 非空约束(not null) • 唯一性约束 ...

  5. mysql 图形界面外键_关于使用可视化图形工具navicat for mysql来创建外键的步骤

    主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...

  6. sql 复合主键 联合主键_学习SQL:主键

    sql 复合主键 联合主键 If you've already worked with databases, then you could hardly miss the term – Primary ...

  7. mysql更新加锁_一条简单的更新语句,MySQL是如何加锁的?

    看如下一条sql语句: #tableT(idint,namevarchar(20))deletefromTwhereid=10: MySQL在执行的过程中,是如何加锁呢? 再看下面这条语句: sele ...

  8. mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题

    MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储.锁.磁盘寻道.分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后 ...

  9. mysql拉荐_荐 一步一步教你MySQL主从复制读写分离

    本次我们通过docker搭建环境 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步 ...

最新文章

  1. Windows下Python环境搭建
  2. (chap3 数据链路) 介质型网络
  3. Python初学的几个迷惑点
  4. 线性时间排序--桶排
  5. 利用 VMware vRealize - 构建和优化云管理
  6. 前端学习(2446):总页码的处理
  7. Summed-Area Variance Soft Shadow Mapping(SAVSM):一
  8. 读取 Excel 之 Epplus
  9. 括号配对问题http://acm.nyist.net/JudgeOnline/problem.php?pid=2
  10. printf利用转译字符在终端显示进度条(时钟)-zhuan
  11. python执行oracle的sql语句_在oracledb中执行SQL脚本一次执行一条语句
  12. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
  13. SharePoint 2010列表中新增的唯一性验证
  14. 【Pygame实战】超有趣的泡泡游戏来袭——愿你童心不泯,永远快乐简单哦~
  15. 浅谈各大搜索引擎蜘蛛
  16. Idea设置豆沙绿(保护你的眼不瞎的密码)
  17. 重装系统后Win10无故关机解决
  18. 众享比特 2018 LC3大会分享:如何基于Fabric实现供应链金融平台系统?
  19. (转)世界上最美丽的英文
  20. 《快递查询-您身边的快递助手-隐私协议》

热门文章

  1. 《游戏设计师修炼之道:数据驱动的游戏设计》一3.8小结
  2. Redis 它是什么?它用来做什么?它的优势与短板如何?
  3. 一、win7下安装yii2
  4. 微习惯虽好,但是最重要的还是坚持
  5. php判断 二维数组中 是否 存在某个一维数组
  6. Cisco Nexus 1000V
  7. 利用 Cloudera 实现 Hadoop (二)
  8. 1886. 判断矩阵经轮转后是否一致
  9. 367. 有效的完全平方数
  10. 机器学习 深度学习 ai_如何突破AI炒作成为机器学习工程师