SprintBoot学习笔记(4):登录(Hibernate+Mysql)
来源:互联网 发布:sql 设置列默认值 编辑:程序博客网 时间:2024/06/06 00:55
上一篇文章中已经实现了简单登录功能,现在通过Hibernate访问Mysql数据库从而进行用户信息判断。
一:创建数据库
这里创建一个名为“demo”的数据库,创建一张表“user”
SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` bigint(11) DEFAULT NULL, `user_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `create_date` datetime(0) DEFAULT NULL, `update_date` datetime(0) DEFAULT NULL) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;
二:配置数据源(修改application.properties)
spring.datasource.url = jdbc:mysql://localhost:3306/demospring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driverClassName = com.mysql.jdbc.Driver# Specify the DBMSspring.jpa.database = MYSQL# Show or not log for each sql queryspring.jpa.show-sql = true# Hibernate ddl auto (create, create-drop, update)spring.jpa.hibernate.ddl-auto = update# Naming strategyspring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy# stripped before adding them to the entity manager)spring.jpa.properties.hibernate.dialect =org.hibernate.dialect.MySQL5Dialect
三:创建实体类
通过注解建立该类与数据库表之间的映射关系,之后使用类对象数据库查询结果。
package com.lim.demo.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="user")public class User { @Id //@GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "id") private Long id; @Column(name = "user_id") private String userId; @Column(name = "user_name") private String userName; @Column(name = "password") private String password; @Column(name = "create_date") private String create_date; @Column(name = "update_date") private String update_date; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getCreate_date() { return create_date; } public void setCreate_date(String create_date) { this.create_date = create_date; } public String getUpdate_date() { return update_date; } public void setUpdate_date(String update_date) { this.update_date = update_date; }}
四:DAO
在此类中实现数据库查询,注意通过注解添加数据表映射,并添加bean支持(@Qualifiler)。
注意@Query()中的“User”为类名,而不是表名。
@Repository@Table(name="user")@Qualifier("userRepository")public interface UserRepository extends CrudRepository<User, Long >{ public User findOne(Long id); public User save(User user); @Query("select t from User t where t.userName=:name") //User为类名 public User findUserByUserName(@Param("name") String name);}
四:Controller
在controller中进行登录验证
//通过注解调用DAO实例 @Autowired private UserRepository userRepository; @RequestMapping("/doLogin") @ResponseBody public String doLogin(HttpServletRequest request, HttpServletResponse response) { //String userId=request.getParameter("userId"); String userName=request.getParameter("userName"); String password=request.getParameter("password"); //String checkcode=request.getParameter("checkcode"); //数据获取失败 if(null == userName || null == password){ return "1@#@系统异常"; } User user=userRepository.findUserByUserName(userName); //用户不存在 if(null == user){ return "2@#@用户不存在"; } //密码错误 if (!password.equals(user.getPassword())) { return "3@#@密码错误"; } //登录成功 HttpSession session = request.getSession(true); session.setAttribute("userName", userName); return "0@#@登录成功"; } @RequestMapping("/loginSuccess") public String loginSuccess(HttpServletRequest request, HttpServletResponse response) { return "/core/loginsuccess"; }
五:重写login.html
使用ajax传输数据,根据返回结果进行相应处理。若用户名及密码正确,则跳转至“/core/loginSuccess”,否则提示相关错误信息。
$("#doLogin").click(function(){ $.ajax({ type:"POST", url:"/core/doLogin", data:{ "userName":$("#userName").val(), "password":$("#password").val(), "checkcode":$("#checkcode").val() }, success: function(result){ var arr=result.split("@#@"); if(arr[0]=="0"){ window.location.href="/core/loginSuccess"; }else{ alert(arr[1]); reset(); } } }) })
阅读全文
0 0
- SprintBoot学习笔记(4):登录(Hibernate+Mysql)
- SprintBoot学习笔记(3):简单登录功能
- SprintBoot学习笔记(1):创建SpringBoot
- SprintBoot学习笔记(2):SpringBoot跳转至页面
- SprintBoot学习笔记(5):解决中文乱码问题
- SprintBoot学习笔记004(dao层jpa接口)
- MySQL学习笔记1:安装和登录
- MySQL学习笔记1:安装和登录
- Hibernate学习笔记(4)
- hibernate学习笔记4
- Hibernate学习笔记(4)
- hibernate学习笔记4
- Hibernate 学习笔记(4)
- hibernate学习笔记4---hql
- MySql学习笔记(登录、增加用户、密码更改)
- 【PHP+MYSQL】实现登录界面的学习笔记
- mysql 学习笔记4
- mysql 学习笔记4
- theano 安装解决方案
- 【LeetCode】C# 21、Merge Two Sorted Lists
- 1047. 编程团体赛(20)
- 虚幻4调试模式和关于虚幻引擎4.18和4.19源码版,无法使用DebuggameEditor调试模式的解决方法。
- Lintcode-贪心-最大子数组和最小子数组
- SprintBoot学习笔记(4):登录(Hibernate+Mysql)
- JVM内幕:Java虚拟机详解
- 如何看待那些不能重现的bug
- [BZOJ]1923: [Sdoi2010]外星千足虫 高斯消元解xor方程组
- bzoj 1222: [HNOI2001]产品加工
- java基础--面向对象4
- Redis 数据库迁移
- HTTP和https区别
- idea常用快捷键