• 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

  • 相关阅读:
    1112评论
    1029 C语言文法
    0909编译原理理解和解释
    复利计算4.0-单元测试
    命令解析程序的编写
    《构建之法》1、2、3章思考与感想
    复利计算4.0
    实验三的分析与总结
    复利计算(更新)
    单、复利计算程序
  • 原文地址:https://www.cnblogs.com/luyang08/p/7172082.html
Copyright © 2020-2023  润新知