假定当前有某个系统的用户登录页面,该页面用信息输入 框和密码框两个文本框,其中信息输入框可以输入:用户名、手机号和邮箱地址。无论输入这3种之中的哪一种都可以配合着密码进行登录操作(也就是:用户名+密码或者手机号+密码或者邮箱+密码)。其中对应的数据库表结构如下 图所示。要完成这个登录操作,现在有如下要求: (1整个项目是Spring Boot项目,以Maven为基础。 (2)对于数据库表的操作采用了种方式进行:JDBC方式、MyBatis方 式和Spring Data JPA方式。如果用户输入的是用户名和密码登录,那么采用JDBC方式访问数据库;如果用户输入的是邮箱和密码登录,那么采用MyBatis方式访问数据库;如果用户输入的手机号和密码登录,那么采用 Spring Data JPA方式访问数据库。3)如果采用JDBC方式访问数据库,要使用注解那章的相关视频内容的代码,也就是说要使 用 GenericDAO 和 GenericDAOlmpl等泛型接口和泛型类。(具体见对应视频的源码)。 请按照上述要求,进行项目的创建、设计、编码和运行。 20100 20100 提示:(1)不要求创建页面,在单体测试中运行通过即可。 (2) 需要把注解那章视频中的内容学习完,并且源码要写好,运行正确。 10 (8)3种不同的持久化技术,需要了种不同的授口。 JDBC可以使用DAO接口、MyBatis需要使用Mapper 接口、Spring Data JPA需要使用Repository接口。 (4)需要定义与上述数据库表对应的实体类、Service 接口和Service接口实现类。 4234 9 (5)注解视频中需要在配置文件中配置的信息需要添加到当前Spring Boot项目对应的配置文件中。 (6)需要正则表达式对应的相关知识。
时间: 2024-03-06 18:51:45 浏览: 205
信息化系统需求分析和可行性分析ppt课件.ppt
首先,我们需要定义一个实体类,用来映射数据库表中的字段。根据数据库表结构,我们可以定义一个名为User的实体类:
```java
public class User {
private Integer id;
private String username;
private String email;
private String phone;
private String password;
// getter and setter methods
}
```
接下来,我们需要定义Service接口和Service实现类。由于要使用不同的持久化技术来访问数据库,我们需要定义三个不同的Service接口,并分别实现它们。以JDBC方式为例,我们可以定义一个名为UserServiceJdbc的接口和一个名为UserServiceJdbcImpl的实现类:
```java
public interface UserServiceJdbc {
User findByUsernameAndPassword(String username, String password);
}
@Service
public class UserServiceJdbcImpl implements UserServiceJdbc {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public User findByUsernameAndPassword(String username, String password) {
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
return jdbcTemplate.queryForObject(sql, rowMapper, username, password);
}
}
```
对于MyBatis和Spring Data JPA方式,我们可以类似地定义UserServiceMyBatis和UserServiceJpa接口及其实现类,具体实现可以参考MyBatis和Spring Data JPA的文档。
接下来,我们需要根据用户输入的信息来选择不同的Service实现类。可以在Controller中定义一个登录接口,根据正则表达式判断用户输入的信息类型,并调用相应的Service实现类来进行登录验证。以下是一个简单的示例代码:
```java
@RestController
public class LoginController {
@Autowired
private UserServiceJdbc userServiceJdbc;
@Autowired
private UserServiceMyBatis userServiceMyBatis;
@Autowired
private UserServiceJpa userServiceJpa;
@PostMapping("/login")
public String login(@RequestParam String info, @RequestParam String password) {
if (info.matches("^\\w+@\\w+\\.\\w+$")) { // 用户输入的是邮箱
User user = userServiceMyBatis.findByEmailAndPassword(info, password);
if (user != null) {
return "Login success";
}
} else if (info.matches("^1[3-9]\\d{9}$")) { // 用户输入的是手机号
User user = userServiceJpa.findByPhoneAndPassword(info, password);
if (user != null) {
return "Login success";
}
} else { // 用户输入的是用户名
User user = userServiceJdbc.findByUsernameAndPassword(info, password);
if (user != null) {
return "Login success";
}
}
return "Login failed";
}
}
```
最后,我们需要在配置文件中配置相关信息。具体配置内容根据不同的持久化技术而异,可以参考各自的文档进行配置。
以上就是一个简单的使用不同持久化技术访问数据库的Spring Boot项目的设计和实现过程,希望能对您有所帮助。
阅读全文