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();                }            }        })    }) 
原创粉丝点击