一、安装数据库
1、我的 MySQL 版本是 5.7,官方下载页面是
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
2、安装教程可以参考
https://blog.csdn.net/ma524654165/article/details/77855431
3、安装完成之后需要在pom文件中添加对mysql的jar包的依赖,当然你也可以在上一篇中新建springboot时和我一样直接选中相关的mysql依赖。同时,上节也说了了如何在application.yml中配置数据库连接了。
4、执行sql语句新建一个我们项目中需要的数据库和数据表
-- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', 'admin', '123');
这里用户密码设置了123哦,后面测试别再输入123456了
二、使用数据库验证登录
在上一篇中,我们是直接在代码中默认了登录账号和密码为admin和123456,使用了数据库之后,我们则需要从数据库中取出相应登录名以及它所对应的密码并做出相应验证,其余思路和上节类似。
User类:
package com.example.library.pojo; import lombok.Data; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity //jpa注解,表示这是一个实体类 @Data public class User { @Id //标识主键 @GeneratedValue(strategy = GenerationType.IDENTITY) //表示主键自增 int id; String username; String password; }
Dao层
Data Access Object(数据访问对象,DAO)即用来操作数据库的对象,代码中通过继承JpaRepository类构建Dao。
新建一个 package,命名为 dao
,然后创建 Java Class,命名为 UserDAO
。代码如下:
package com.example.library.dao;
import com.example.library.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserDao extends JpaRepository<User,Integer> {
User findByUsername(String username);
User findByUsernameAndPassword(String username, String password);
}
Jpa有自己的代码规范,这里看似一句SQL语句没写,但实际上函数的命名就为这个函数提供了相应的SQL语句。
比如 findByUsername
,就是通过 username
字段查询到对应的行,并返回给 User 类。
UserService
package com.example.library.service;
import com.example.library.dao.UserDao;
import com.example.library.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public User getByName(String username) {
return userDao.findByUsername(username);
}
public boolean isExist(String username){
User user = getByName(username);
return null != user;
}
public User get(String username,String password){
return userDao.findByUsernameAndPassword(username,password);
}
public void save(User user){
userDao.save(user);
}
}
LoginController
package com.example.library.controller;
import com.example.library.result.Result;
import com.example.library.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.HtmlUtils;
import com.example.library.pojo.User;
@Controller
public class LoginController {
@Autowired
UserService userService;
@CrossOrigin
@PostMapping(value = "api/login")
@ResponseBody
public Result login(@RequestBody User requestUser) {
// 对 html 标签进行转义,防止 XSS 攻击
String username = requestUser.getUsername();
username = HtmlUtils.htmlEscape(username);
User user = userService.get(username, requestUser.getPassword());
if (user == null) {
String message = "账号密码错误";
return new Result(400);
} else {
return new Result(200);
}
}
}
总结
版权声明:《 MVC & MVVM学习 &VUE学习 & springboot小型项目开发(续上一篇)数据库篇 》为admin原创文章,转载请注明出处!
最后编辑:2022-9-9 11:09:58