java的UUID类型字段,如何通过jdbc进行数据库的CRUD

本文介绍UUID的概念及其在Java中的实现,并探讨了UUID在MySQL数据库中的存储方式及通过JDBC进行操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字:UUID byte[] jdbc mysql java
1、UUID/GUID概念
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。
A UUID is a 16-byte (128-bit) number. In its canonical form, a UUID is represented by 32 hexadecimal digits, displayed in five groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters (32 digits and four hyphens). For example:
550e8400-e29b-41d4-a716-446655440000

There are 340,282,366,920,938,463,463,374,607,431,768,211,456 possible UUIDs (16 to the 32nd power), or about 3 × 1038.


        详细介绍请参考http://en.wikipedia.org/wiki/Universally_Unique_Identifier。


2、java中的类java.Util.UUID
    jdk1.5增加了类java.Util.UUID,用于方便生成UUID。
        UUID uuid=UUID.randomUUID();
        String uuidStr=uuid.toString();//生成的如:9b17a4f1-cae4-42ce-9cba-b899dcac8517
      UUID类中还有个方法也常用:UUID.fromString(name)
Creates a UUID from the string standard representation as described in the toString method.


3、数据库中UUID的存储类型
常用的存储方式两种,以mySql数据库为例(关于oracle数据库,测试后再贴)
字符串方式:char(36)
字节方式(二进制):binaray(36)
创建表结构:
create table guid(id binary(36),uuid char(36));
4、jdbc如何操作
@Test
        public void guid(){                
                UUID uuid=UUID.randomUUID();                
                String sqlSelect="select id,uuid from guid";
                String sqlInsert="insert into guid(id,uuid) values(?,?)";
                String sqlDelete="delete from guid where id=?";
                try{
                        JDBConnection conn=new JDBConnection();
                        
                        try{
                                //insert                        
                                PreparedStatement ps=conn.getConect().prepareStatement(sqlInsert);
                                //id列,参数为byte[]或者String都可以
                                ps.setObject(1, uuid.toString().getBytes());
                                //uuid列   
                                ps.setString(2, uuid.toString());
                                ps.executeUpdate();
                                //select
                                ResultSet result=conn.executeQuery(sqlSelect);
                                while(result.next()){
                                        Object id=result.getObject(1);//获取的byte[]
                                        Object uid=result.getObject(2);
                                        String ids=result.getString(1);
                                        
                                        Assert.assertEquals(uid, uuid.toString());
                                        Assert.assertEquals(ids,uuid.toString());        
                                        //byte[]转换为UUID字符串
                                        Assert.assertEquals(new String((byte[])id),uuid.toString());
                                        Assert.assertEquals(UUID.fromString(ids).toString(),uuid.toString());
                                }
                                //delete
                                ps=conn.getConect().prepareStatement(sqlDelete);
                                //id列,参数为byte[]或者String都可以
                                ps.setObject(1, uuid.toString().getBytes());                                
                                ps.executeUpdate();
                        }catch(Exception ex){
                                ex.printStackTrace();
                        }finally{
                                conn.close();
                        }
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
### MyBatis-Plus 数据库操作使用指南 MyBatis-Plus 是一款强大的 MyBatis 增强工具,能够显著简化开发流程并提升效率。以下是关于如何在 IntelliJ IDEA 中设置并使用 MyBatis-Plus 进行数据库操作的具体说明。 #### 1. 配置环境 为了开始使用 MyBatis-Plus,需先确保项目的依赖已正确引入。可以在 `pom.xml` 文件中添加如下 Maven 依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> ``` 接着,在 Spring Boot 的配置文件(通常是 `application.yml` 或 `application.properties`)中定义数据库连接参数[^3]。例如: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: your_username password: your_password driver-class-name: com.mysql.cj.jdbc.Driver ``` #### 2. 创建实体类 创建与数据库表对应的实体类,并标注必要的注解以便实现自动映射功能。例如: ```java import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; @TableName("user") // 映射到 user 表 public class User { private Long id; // 主键字段 private String name; @TableLogic // 定义逻辑删除字段 private Integer deleted; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getDeleted() { return deleted; } public void setDeleted(Integer deleted) { this.deleted = deleted; } } ``` #### 3. 编写 Mapper 接口 Mapper 接口继承自 MyBatis-Plus 提供的基础接口 `BaseMapper<T>`,从而获得一系列 CRUD 方法的支持。例如: ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface UserMapper extends BaseMapper<User> {} ``` 无需额外编写 XML 文件即可直接调用方法执行增删改查操作。 #### 4. 启动类扫描配置 确认启动类上是否启用了组件扫描机制,以加载 Mapper 接口实例化所需的必要条件。通常情况下,只需简单声明 `@MapperScan` 注解即可: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; @SpringBootApplication @MapperScan("com.example.mybatisplusjoin.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 5. 功能扩展 除了基本的 CRUD 支持外,MyBatis-Plus 还提供了丰富的高级特性来优化开发体验,比如 SQL 日志打印、主键生成策略、逻辑删除等[^2]。下面列举几个常用场景及其解决方案: - **SQL 执行日志** 只需开启调试模式或将 logLevel 设置为 TRACE 即可查看详细的 SQL 输出信息。 - **主键生成策略** 在实体类属性上方指定合适的主键生成方式,如 UUID 或者自增序列编号。 - **逻辑删除** 利用 `@TableLogic` 注解标记某列作为软删除标志位,配合全局配置启用该行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值