我现在要在数据库中用Enum插入数据,角色标志,0代表管理员,1代表教室,2代表学生,帮我写出代码
时间: 2024-03-20 15:44:14 浏览: 24
好的,以下是使用Enum插入数据的代码实现:
首先需要在数据库中创建一个Enum类型,用来存储角色标志,可以使用以下命令来创建:
```
CREATE TYPE role AS ENUM ('admin', 'classroom', 'student');
```
然后在表中定义一个列,类型为上述创建的role类型,用来存储角色标志,例如:
```
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
role role NOT NULL
);
```
接下来就可以使用INSERT INTO语句向表中插入数据了,示例代码如下:
```
INSERT INTO users (name, role) VALUES ('admin1', 'admin');
INSERT INTO users (name, role) VALUES ('classroom1', 'classroom');
INSERT INTO users (name, role) VALUES ('student1', 'student');
```
注意:在插入数据时,需要使用Enum类型中定义的枚举值(即'admin', 'classroom', 'student'),而不是使用数字0、1、2等代替。
相关问题
数据库插入数据enum
回答: 在MySQL中,可以使用ENUM数据类型来定义一个列,该列只能存储预定义的值。ENUM数据类型的语法为enum(数据值1, 数据值2...)。数据值列表在255个以内时,使用1个字节来存储;超过255个但小于65535个时,使用2个字节来存储。例如,创建一个名为my_enum的表,其中有一个名为gender的列,它的数据类型为enum('男', '女', '保密')。可以使用INSERT INTO语句向该表中插入数据,例如插入'男'和'女'两个值。最后,可以使用SELECT语句来查询my_enum表中的数据。[2][3]
帮我用spring boot写一个学生宿舍管理系统多角色登录功能
好的,下面是一个简单的学生宿舍管理系统多角色登录功能的实现,使用了Spring Boot和Spring Security框架。
首先,我们需要定义几个角色,比如学生、宿管、管理员。
```java
public enum Role {
STUDENT,
DORMITORY_MANAGER,
ADMIN;
}
```
然后,我们定义一个User类,用于表示系统中的用户。每个用户都有一个用户名、密码和角色列表。
```java
public class User implements UserDetails {
private String username;
private String password;
private List<Role> roles;
// getters and setters
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<>();
for (Role role : roles) {
authorities.add(new SimpleGrantedAuthority(role.toString()));
}
return authorities;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
```
接着,我们需要实现一个UserDetailsService,用于根据用户名加载用户信息。
```java
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 根据用户名从数据库中获取用户信息
User user = userRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("User not found");
}
return user;
}
}
```
在Spring Security的配置类中,我们需要定义各个角色的访问权限。
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/student/**").hasAuthority(Role.STUDENT.toString())
.antMatchers("/dormitory-manager/**").hasAuthority(Role.DORMITORY_MANAGER.toString())
.antMatchers("/admin/**").hasAuthority(Role.ADMIN.toString())
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
```
最后,我们可以在Controller中使用@PreAuthorize注解来限制访问权限。
```java
@Controller
@RequestMapping("/student")
@PreAuthorize("hasAuthority('STUDENT')")
public class StudentController {
// 学生相关操作
}
@Controller
@RequestMapping("/dormitory-manager")
@PreAuthorize("hasAuthority('DORMITORY_MANAGER')")
public class DormitoryManagerController {
// 宿管相关操作
}
@Controller
@RequestMapping("/admin")
@PreAuthorize("hasAuthority('ADMIN')")
public class AdminController {
// 管理员相关操作
}
```
以上就是一个简单的学生宿舍管理系统多角色登录功能的实现。