Spring data jpa使用枚举

枚举的优越性不用多说。在实体中使用,上代码

实体类:

@Entity
@Table(name = "cache_user")
public class User {
    /**
     * 用户类型
     */
    public static enum AccountType {
        TEACHER,//老师
        STUDENT;//学生
    }

    @Id
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @GeneratedValue(generator = "uuid")
    private String id;

    private String name;

    private int age;

    /**
     * EnumType:  ORDINAL 枚举序数  默认选项(int)。eg:TEACHER 数据库存储的是 0
     *            STRING:枚举名称       (String)。eg:TEACHER 数据库存储的是 "TEACHER"
     */
    @Enumerated(EnumType.STRING)
    private AccountType accountType = AccountType.TEACHER;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public User() {
        super();
    }

    public AccountType getAccountType() {
        return accountType;
    }

    public void setAccountType(AccountType accountType) {
        this.accountType = accountType;
    }

查询时:

    @Query("from User u  where u.accountType = :type ")
    User findByType(@Param("type") AccountType type);

eg :

        User u3 = userRepository.findByType(AccountType.TEACHER);
        System.out.println("第二次查询:" + u3.getAge());

生成的sql:

INFO  [main] jdbc.sqlonly.sqlOccured:226 - select user0_.id as id1_0_, user0_.account_type as account_2_0_, user0_.age as age3_0_, user0_.name
as name4_0_ from cache_user user0_ where user0_.account_type=‘KEEPER‘ 

如果注解是:

    @Enumerated(EnumType.ORDINAL)
    private AccountType accountType = AccountType.TEACHER;

或者无注解:

  private AccountType accountType = AccountType.TEACHER;

生成的sql:

[main] jdbc.sqltiming.sqlTimingOccured:370 - select user0_.id as id1_0_, user0_.account_type as account_2_0_, user0_.age as age3_0_, user0_.name
as name4_0_ from cache_user user0_ where user0_.account_type=0

时间: 2024-07-28 19:30:58

Spring data jpa使用枚举的相关文章

Spring Data JPA 1.10.1 详解二之快速Demo

一.maven配置文件加入依赖 Spring Data JPA 依赖,最新稳定的版本为1.10.1.RELEASE,这里需要说明下的是,其依然依赖hibernate JPA相关JAR,hibernate-core之类的是不需要的.hibernate是JPA规范的一种实现,所以需要加入其依赖.ehcache是hibernate二级缓存的配置,不是必须的. <dependency>         <groupId>org.springframework.data</groupI

spring data jpa 的使用

使用spring data jpa 开发时,发现国内对spring boot jpa全面介绍的文章比较少案例也比较零碎,因此写文章总结一下. spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营

spring data jpa的使用

在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spring data jpa 开发时,发现国内对spring boot jpa全面介绍的文章比较少案例也比较零碎,因此写文章总结一下.本人也正在翻译Spring Data JPA 参考指南,有兴趣的同学欢迎联系我,一起加入翻译中! spring data jpa介绍 首先了解JPA是什么? JPA(Ja

Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring Data 和 Jpa! 本文大纲: 1. 故事的主角 1.1 Jpa 1.1.1 JPA 是什么 Java Persistence API:用于对象持久化的 API Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层 1.1.2 JPA 和 Hibernate 的关

Spring Data JPA实战视频教程

视频大纲 JPA入门 Spring Data JPA入门 Repository的定义 查询方法的命名策略 JPQL查询,结果映射 Named Query,Named Native Query 排序,分页 JPA Criteria查询 Querydsl查询 Query by Example 一对一,一对多,多对一,多对多 @EnableJpaRepositories 注解 自定义.扩展Repository 实体的生命周期 审计 乐观锁,悲观锁 集成 OpenJPA 查询批注 缓存 事务 Sprin

Spring Data JPA进阶——Specifications和Querydsl

Spring Data JPA进阶--Specifications和Querydsl 本篇介绍一下Spring Data JPA中能为数据访问程序的开发带来更多便利的特性,我们知道,Spring Data repository的配置很简单,一个典型的repository像下面这样: public interface CustomerRepository extends JpaRepository<Customer, Long> { Customer findByEmailAddress(Str

spring data jpa基本介绍

jpa是将java对象持久化到关系型数据库的标准方式,spring data jpa作为spring data项目在关系型数据库数据访问层的解决方案,为简化jpa存储提供了良好的支持. 有关jpa的文章网上实在是太多太多,以下几篇写的比较不错,几乎涵盖了书中所有要讲的东西,也不copy来copy去的了,免得真正需要的人又搜出一大堆废话. jpa学习笔记:http://www.blogjava.net/luyongfa/archive/2012/11/01/390572.html spring d

Spring Data JPA 入门Demo

什么是JPA呢? 其实JPA可以说是一种规范,是java5.0之后提出来的用于持久化的一套规范:它不是任何一种ORM框架,在我看来,是现有ORM框架在这个规范下去实现持久层. 它的出现是为了简化现有的持久化框架,例如hibernate.Toplink等,让我们的程序再不用去使用这些现有的产品所提供的API,也就是说,我们只需遵循这套规范,用什么框架实现数据库操作就不会有太高的耦合度,JPA可以为我们降低耦合,并且简化我们的ORM操作. JPA主要提供3方面的技术: 1.ORM映射元数据,通常对应

深入浅出学Spring Data JPA

第一章:Spring Data JPA入门   Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. Spring Data 包含多个子项目: Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化 JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能 Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 P