您的位置:首页 > 数据库 > MySQL

SprintBoot学习笔记(4):登录(Hibernate+Mysql)

2017-10-09 21:42 507 查看
上一篇文章中已经实现了简单登录功能,现在通过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/demo
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.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 us
a21a
erId) {
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();
}
}
})

})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: