美文网首页程序员
Spring Boot + MySQL+JDBC+JPA网页制作

Spring Boot + MySQL+JDBC+JPA网页制作

作者: 不是蒜苗 | 来源:发表于2018-12-26 14:41 被阅读2次

    tips:数据库用的是MySQL,编辑器是Intellij,具体两个东西怎么安装请左转Google。

    需要JAVA基础知识,SQL数据库基础知识

    很多地方具体原理我也不是很清楚,记录下来只是防止自己忘了。本文属于入门入门入门级别笔记,仅仅是自学笔记,轻弹勿喷,仅仅完成了最基础的前后端通信。

    养成一个好习惯:三层架构

    image
    • 界面层 controller

      文件命名规则example: MainController.java

    • 业务逻辑层 service

      文件命名规则example: StudentService.java

    • 数据层 dao

      文件命名规则example: StudentDao.java

    model层用于存放数据库对应的mapped

    `文件命名规则example: Student.java`
    

    Intellij新建项目实践

    新建Spring Boot + Jpa项目

    1. Spring项目


      image
    2. 修改项目名称


      image
    3. 添加web依赖


      image
    4. 添加SQL依赖:MySQL,JPA,JDBC


      image
    5. 选择项目存放地址


      image

    配置

    • 当前目录状态

    我们只需要关注框框内的就好了。
    com.example.test存放的是java代码,resource.static下存放静态文件

    image
    • 在.com.example.text下构建三层架构目录
    image
    • resourece目录下的application.properties重命名为application.yml
    image
    • 编辑application.yml,添加如下代码。
        spring:
          datasource:
            driver-class-name: com.mysql.jdbc.Driver
            url: jdbc:mysql://localhost:3306/javaweb
            username: root
            password: root
          jpa:
            properties:
              hibernate:
                hbm2ddl:
                  auto: update
            show-sql: true
    

    datasource下的driver-class-name属性标注使用了jdbc驱动。
    url属性为数据库地址,我这里是本地数据库,最后的/javaweb为数据库名称。

    jpa下的auto表示有表的话修改表

    model下建立student表的实体类

    在model目录下新建一个Student类,里面的get和set方法可以用快捷键Alt+Ins调出Generate选择Getter and Setter

    类上面一定要加@Entity,才能声明为实体

    package com.example.classcommunity3.model;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    //实体
    @Entity
    public class Student {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long sid;
    
        private String saccount;
    
        private String spassword;
    
        private String sname;
    
        public Long getSid() {
            return sid;
        }
    
        public void setSid(Long sid) {
            this.sid = sid;
        }
    
        public String getSaccount() {
            return scount;
        }
    
        public void setSaccount(String scount) {
            this.scount = scount;
        }
    
        public String getSpassword() {
            return spassword;
        }
    
        public void setSpassword(String spassword) {
            this.spassword = spassword;
        }
    
        public String getSname() {
            return sname;
        }
    
        public void setSname(String sname) {
            this.sname = sname;
        }
    }
    

    dao下建立Student表对应的数据层

    dao目录下新建一个类StudentDao

    package com.example.classcommunity3.dao;
    
    import com.example.classcommunity3.model.Student;
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface StudentDao extends JpaRepository<Student, Long> {
    }
    

    添加第一个数据库操作:获取Student表中的account

    public interface StudentDao extends JpaRepository<Student, Long> {
    
        Student findByScount(String count);
    }
    

    在Intellij中输入findBy就会自动弹出许多函数,这些都是JPA根据刚才的Student表实体自动生成的。

    service目录下建立业务层类

    service目录下新建StudentService类,我们现在要实现的是判断页面输入的密码和数据库中的是否一致。需要建立StudentDao的对象,查找到的数据会以List<Student>的格式输出。我们这里只查询1组数据,所以直接用Student对象接受赋值。

    package com.example.classcommunity3.service;
    
    import com.example.classcommunity3.dao.StudentDao;
    import com.example.classcommunity3.model.Student;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    //业务逻辑
    @Service
    @RequestMapping
    public class StudentService {
    
        @Autowired
        StudentDao studentDao;      //数据操作
    
        public boolean login(String name, String psw) {
    
            Student student = studentDao.findByScount(name);
            if (student != null) {
                System.out.print(student.getSpassword());
                if (psw.equals(student.getSpassword()))
                    return true;
            }
    
            return false;
        }
    }
    

    controller目录下新建界面层类

    controller目录下新建MainController类,有如下代码,从页面中获取name和psw,并传值到service。

    package com.example.classcommunity3.controller;
    
    import com.example.classcommunity3.service.StudentService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class MainController {
    
        @Autowired
        StudentService studentService;
    
        @RequestMapping("/login")
        public boolean login(String name,String psw){
    
            return studentService.login(name,psw);
        }
    }
    

    再贴一个HTML与Java通信的代码

    Login.html

    <script>
      $("#login").click(function () {
          var name=$('#count').val();
          var psw = $('#psw').val();
          alert(name);
          $.ajax({
              url:'/login',
              type:'post',
              data:{name:name,psw:psw},
              dataType:'json',
              success:function (result) {
                  if(result)
                      alert('成功');
                  else
                      alert('失败');
              }
          });
      })
    </script>
    

    学习总结:Web刚开始最头疼的就是入门的问题,很多东西不知道,前后端如何通信不知道。仅此文用来记录一下学习过程。

    相关文章

      网友评论

        本文标题:Spring Boot + MySQL+JDBC+JPA网页制作

        本文链接:https://www.haomeiwen.com/subject/qsyhlqtx.html