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

  • 相关阅读:
    对于glut和freeglut的一点比较和在VS2013上的配置问题
    应用程序无法启动(0*c000007b)
    无法定位程序输入点glPopAttrib于动态连结库OPENGL.dll上
    计算机中丢失OPENGL.dll
    Visual Studio "无法查找或打开PDB文件"解决方法
    VC包含目录、附加依赖项、库目录及具体设置
    无法解析的外部符号 _WinMain@16
    OpenGL入门学习
    linux-用户建立及权限分配
    linux下添加用户并赋予root权限
  • 原文地址:https://www.cnblogs.com/luyang08/p/7172082.html
Copyright © 2011-2022 走看看