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

  • 相关阅读:
    Websocket --socket.io的用法
    Vuex中mapState的用法
    vue中关于computed的一点理解
    webuploader大文件分片,多线程总结
    pdf的使用遇到的问题
    单文件WebUploader做大文件的分块和断点续传
    webUploader大文件断点续传学习心得 多文件
    iframe子页面与父页面元素的访问以及js变量的访问
    pwa 集合
    mpvue 转小程序实践总结
  • 原文地址:https://www.cnblogs.com/luyang08/p/7172082.html
Copyright © 2011-2022 走看看