tk.mybatis实现uuid主键生成的示例代码

引入依赖

 <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>

1、创建一个GenId的实现类

package com.xiaobu.base.entity;

import tk.mybatis.mapper.genid.GenId;

import java.util.UUID;

/**
 * @author xiaobu
 * @version JDK1.8.0_171
 * @date on  2019/3/27 11:37
 * @description V1.0
 */
public class UUIdGenId implements GenId<String> {
    @Override
    public String genId(String s, String s1) {
        return UUID.randomUUID().toString().replace("-","");
    }
}

2、创建实体类

package com.xiaobu.entity;

import com.xiaobu.base.entity.UUIdGenId;
import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Id;
import java.io.Serializable;

/**
 * 功能描述: 测试uuid主键生成
 * @author xiaobu
 * @date 2019/3/27 16:30
 * @version 1.0
 */
@Data
public class TbDemo1 implements Serializable {
    /**
	*
	*/
    @Id
    @KeySql(genId = UUIdGenId.class)
    private String id;

    /**
	*
	*/
    private String name;

    private static final long serialVersionUID = 1L;
}

3、mapper类集成通用mapper

package com.xiaobu.mapper;

import com.xiaobu.base.mapper.MyMapper;
import com.xiaobu.entity.TbDemo1;
import org.apache.ibatis.annotations.Mapper;

/**
 * 功能描述:继承通用mapper
 * @author xiaobu
 * @date 2019/3/27 17:06
 * @version 1.0
 */
@Mapper
public interface TbDemo1Mapper extends MyMapper<TbDemo1> {

}

4、测试

package com.xiaobu;

import com.xiaobu.entity.TbDemo1;
import com.xiaobu.mapper.TbDemo1Mapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * @author xiaobu
 * @version JDK1.8.0_171
 * @date on  2019/3/27 11:11
 * @description V1.0
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class TbDemo1Test {

    @Autowired
    private TbDemo1Mapper tbDemo1Mapper;

    @Test
    public void insert(){
        TbDemo1 tbDemo1 = new TbDemo1();
        tbDemo1.setName("测试uuid生成");
        tbDemo1Mapper.insert(tbDemo1);
        System.out.println("新增完成.....");
    }
}

tk.mapper的insertList不支持,自己写的插入方法也是不支持的。

到此这篇关于tk.mybatis实现uuid主键生成的示例代码的文章就介绍到这了,更多相关tk.mybatis生成uuid主键内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring Boot整合tk.mybatis代码实例

    这篇文章主要介绍了Spring Boot整合tk.mybatis代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概述 tk.mybatis 是在 MyBatis 框架的基础上提供了很多工具,让开发更加高效 引入依赖 在 pom.xml 文件中引入 mapper-spring-boot-starter 依赖,该依赖会自动引入 MyBaits 相关依赖 <dependency> <groupId>tk.mybatis</

  • tk.mybatis如何扩展自己的通用mapper

    tk.mybatis扩展自己的通用mapper 目的:tk.mybatis 提供的通用mapper,虽然使用方便,不过在有些sql还是不能满足我们的需要的,而且我们希望对于deleted语句进行管控(因为通用mapper提供的都是物理删除,有时我们对一些敏感数据只能进行逻辑删除),因此我们将基于原有的通用mapper进行自己的扩展 1 jar引入 <!-- 非springboot --> <dependency> <groupId>tk.mybatis</grou

  • tk.mybatis扩展通用接口使用详解

    一.tk.mybatis已经为我们封装好了许多拆箱即用的通用mapper,但在实际的项目开发中想必不少小伙伴在数据库设计中都会采用逻辑删除这种方案,再去使用通用的mapper接口就不行了. 这时候就需要我们封装一些扩展的通用Mapper接口. 二.项目中提供了大量现成的方法,这些方法可以作为扩展时的参考. 例如 selectAll 方法. 首先定义接口: @RegisterMapper public interface SelectAllMapper<T> { /** * 查询全部结果 * *

  • 解决tk.mybatis中写自定义的mapper的问题

    问题 使用tk.mybatis能满足大多数操作,但是想添加自己的查询方法时候今天遇到了坑,总结一下 官方教程 大致分两种 1. 使用纯接口注解方式时 在mapper接口中自定义方法上添加如@Select,@insert类似的注释,里边写相应的sql语句,如下 import org.apache.ibatis.annotations.Select; import tk.mybatis.mapper.common.Mapper; public interface CountryMapper exte

  • SpringBoot2.0整合tk.mybatis异常解决

    pom配置如下(标准简易版): <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <properties> <java.version>1.8&

  • 详解扩展tk.mybatis的批量更新的功能

    tk.mybatis没有带批量更新的功能,批量更新却是经常使用的,所以需要自己实现. 批量更新网上主要有2种方式:case when方式.foreach方式 但是foreachzhe这种方式效率非常低下,不知道为何那多么帖子在流传,请看我另一个文章. 扩展tk.mybatis的批量更新,采用case when方式,源码干货如下: 首先定义下mapper接口 import org.apache.ibatis.annotations.UpdateProvider; import java.util.

  • 扩展tk.mybatis的流式查询功能实现

    mybatis查询默认是一次获取全部, 有时候需要查询上万上百万数据时,如果一次性读取到内存中,会容易导致OOM问题.这时候需要采用流式查询.以下扩展了tk.mybatis的流式查询功能. 直接上干货: @Options注解是关键 import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.mapping.Re

  • tk.Mybatis 插入数据获取Id问题

    目录 1.问题描述 2.问题分析 3.总结 1.问题描述 几种代码写法会有不同的ID返回值,下面我们一一分析. 2.问题分析   首先一种插入写法,源码如下: SysUser .java /** * 用户管理(SysUser)实体类 * * @author Chen * @since 2020-05-06 14:16:48 */ @Data @ApiModel("用户管理") public class SysUser implements Serializable { private

  • tk.mybatis实现uuid主键生成的示例代码

    引入依赖 <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.0.2</version> </dependency> 1.创建一个GenId的实现类 package com.xiaobu.base.entity; import tk.mybatis.ma

  • Java探索之Hibernate主键生成策略详细介绍

    1.increment 由Hibernate从数据库中去除主键的最大值(每个session只取一次),以该值为基础,每次增量为1,在内存中生成主键,不依赖于底层的数据库,因此可以跨数据库. <id name="id" column="id"> <generator class="increment" /> </id> Hibernate调用org.hibernate.id.IncrementGenerator类

  • mybatis-plus主键生成策略

    MP 支持多种主键策略 默认是推特的"" 雪花算法"" ,也可以设置其他策略下面我演示主键策略使用 MP的主键定义在一个一个枚举类中 源码如下 public enum IdType { AUTO(0),//数据库自增 依赖数据库 NONE(1),// 表示该类型未甚至主键类型 (如果没有主键策略)默认根据雪花算法生成 INPUT(2),//用户输入ID(该类型可以通过自己注册填充插件进行填充) //下面这三种类型,只有当插入对象id为空时 才会自动填充. ID_WO

  • mybatis-plus id主键生成的坑

    简要说明 由于mybatis-plus会自动插入一个id到实体对象, 不管你封装与否, 所以有时候导致一些意外的情况发生 默认是生成一个长数字字符串(编码不同可能结尾带有字母) 错误 ested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.xxx' with value '1110423703487479810' Cause: ja

  • Mybatisplus主键生成策略算法解析

    mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法 雪花算法 snowflflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID.其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0.可以保证几乎全球唯一! mybatisplus默认主键生成策略有可能会和我们的数据库

  • mybatis中insert主键ID获取和多参数传递的示例代码

    一.插入数据主键ID获取 一般我们在做业务开发时,经常会遇到插入一条数据并使用到插入数据的ID情况.如果先插入在查询的话需要多一次sql查询,未免效率太低.因此mybatis也有提供插入数据并返回主键ID的方式.如下 1.Insert/update 1.1.属性解释 keyProperty selectKey 语句结果应该被设置的目标属性.如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表. resultType 结果的类型.MyBatis 通常可以推算出来,但是为了更加确定写上也不会有什

  • Mybatis insert方法主键回填和自定义操作

    在数据库插入的时候,有很多属性需要我们自己处理,如主键自增字段. MYSQL中主键根据一定规则生成后,需要我们在插入后去主动获取,以便后面的操作,Mybatis为我们提供了处理的方法. 主键回填 keyProperty:指定哪个字段是主键 useGeneratedKeys:这个主键是否使用数据库内置生成策略 我们可以在XML文件中进行如下配置: <insert id="insertUser" parameterType="user" useGeneratedK

  • Mybatis-Plus主键生成策略的方法

    目录 前言 一.官网 二.主键注解@TableId说明 1.源码 2.作用 3.使用 三.主键生成策略-IdType枚举说明 1.源码 2.说明 3.全局设置 三.ID生成器介绍 1.IdentifierGenerator 2.IKeyGenerator 四.自定义主键生成器 总结 前言 很多人在使用Mybatis-Plus的时候可能会疑惑,自己明明没有配置主键的生成策略,但是执行新增操作时却自动生成了主键,而且还特别长.这是由于Mybatis-Plus默认就会采用雪花算法填充主键字段. 今天就

  • mybatis insert返回主键代码实例

    这篇文章主要介绍了mybatis insert返回主键代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作. 使用ibatis的selectKey就可以得到sequence的值,同时也会将值返回.不过对于不同的数据库有不同的操作方式. 对于oracle: <insert id="

  • mybatis中返回主键一直为1的问题

    目录 mybatis 返回主键一直为1 mybatis 自增主键 主键回传,返回id为null 踩坑 Mybatis主键回传流程 踩坑 总结 mybatis 返回主键一直为1 1是返回的插入成功的行数,这没有错 而自增id则是直接映射到对象里,直接输出 xxx.getId()即可 举例: 在xml中: <insert id="addUser" parameterType="blog.model.User" useGeneratedKeys="true

随机推荐