用idea自动生成了项目之后,就可以直接访问项目了,但是目前的项目只能访问静态页面,无法实现相关功能。本篇以构建登录注册用户信息管理为demo,来讲解如何使用springboot。
首先,在数据库中创建一个数据表,然后使用idea自动生成持久化类,
点击file,选择项目结构,然后加入jpa到项目中
点击左下角的Persistence窗口,右键项目
选择之后看到
填写完之后就可以了。我在mysql中创建了如下的表:
USE `sbdemo`;
-- 导出 表 sbdemo.users 结构
CREATE TABLE IF NOT EXISTS `users` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userphone` bigint(20) DEFAULT NULL,
`username` varchar(50) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
生成的结果如下:
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Objects;
@Entity
@Table(name = "users", schema = "sbdemo", catalog = "")
public class UsersEntity {
private int uid;
private Long userphone;
private String username;
private String nickname;
private Integer sex;
@Basic
@Column(name = "uid")
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
@Basic
@Column(name = "userphone")
public Long getUserphone() {
return userphone;
}
public void setUserphone(Long userphone) {
this.userphone = userphone;
}
@Basic
@Column(name = "username")
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Basic
@Column(name = "nickname")
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@Basic
@Column(name = "sex")
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UsersEntity that = (UsersEntity) o;
return uid == that.uid &&
Objects.equals(userphone, that.userphone) &&
Objects.equals(username, that.username) &&
Objects.equals(nickname, that.nickname) &&
Objects.equals(sex, that.sex);
}
@Override
public int hashCode() {
return Objects.hash(uid, userphone, username, nickname, sex);
}
}
然后到去创建一个仓库类
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface LoginRepository extends JpaRepository<UsersEntity,Integer> {
}
用于对数据库进行CRUD操作
然后写一个控制器,来处理相关的逻辑
@RestController
public class LoginController {
@Autowired
LoginRepository loginRepository;
//写逻辑
}
通过@RestController表明这是一个控制器类,@Autowired用来进行自动依赖注入,将刚才定义的仓库注入到控制器中。
要写一个接口,首先得定义返回值类型和接收的参数。设计接收的参数为userphone和username,分别表示用户名和密码,用户名为电话号码。返回的参数为code表示成功或者失败,info代表错误提示信息。
@JsonInclude(JsonInclude.Include.NON_NULL)
public class LoginResultVo {
private int code;
private String info;
public int getCode(){
return code;
}
public String getInfo(){return info;}
public void setInfo(int code){
this.code = code;
}
public void setInfo(String info){
= info;
}
}
接收的参数vo如下:
public class LoginRequestVo {
private int userphone;
private String username;
public int getUserphone() {
return userphone;
}
public void setUserphone(int userphone) {
this.userphone = userphone;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
其中,@JsonInclude(JsonInclude.Include.NON_NULL) 是为了过滤不正常的输出(当输出为空的时候不输出)
一个简单的例子是这样的
@RequestMapping(value = "/login",method = { RequestMethod.POST})
public LoginResultVo loginRequest(@RequestParam("data") String data){
LoginResultVo loginResultVo = new LoginResultVo();
try {
Gson gson = new Gson();
LoginRequestVo loginRequestVo = gson.fromJson(data,LoginRequestVo.class);
}catch (Exception e){
e.printStackTrace();
}
return loginResultVo;
}
最后完整的代码如下:
@RequestMapping(value = "/login",method = { RequestMethod.POST})
public LoginResultVo loginRequest(@RequestParam("data") String data){
LoginResultVo loginResultVo = new LoginResultVo();
try {
Gson gson = new Gson();
LoginRequestVo loginRequestVo = gson.fromJson(data,LoginRequestVo.class);
int userphone = loginRequestVo.getUserphone();
String username = loginRequestVo.getUsername();
UsersEntity usersEntity=loginRepository.findByUserphoneAndUsername(userphone);
String password = usersEntity.getUsername();
if (username.equals(password)){
loginResultVo.setCode(200);
loginResultVo.setInfo("密码正确,登录成功");
}else{
loginResultVo.setCode(400);
loginResultVo.setInfo("密码错误,登录失败");
}
return loginResultVo;
}catch (Exception e){
e.printStackTrace();
}
return loginResultVo;
}