zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Json的序列化与反序列化
    RelativeSource设定绑定方向
    Java导出Excel工具类
    CentOS配置ssh免密码登录
    CentOS为用户增加root权限
    CentOS安装RabbitMQ步骤
    CentOS配置主机名和主机映射
    CentOS配置静态IP
    Java执行系统命令工具类(JDK自带功能)
    Linux定时任务
  • 原文地址:https://www.cnblogs.com/luyang08/p/7172082.html
Copyright © 2011-2022 走看看