spring boot:实现jpa+thymeleaf 用户管理

Posted 加辣椒了吗?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot:实现jpa+thymeleaf 用户管理相关的知识,希望对你有一定的参考价值。


今天布置的spring boot小作业:

实现controller 和 模板
/users 查看用户列表
/users/del 删除 用户
/users/add 新增用户
/users/edit 修改用户


一、实现原理

前端采用semantic ui框架,ajax实现数据发送,
后端采用ssm三层架构,实现jpa+thymeleaf 用户管理

二、代码

1.基本类(po/dao层)

user.java:

package com.example.po;

import lombok.Data;

import javax.persistence.*;

/**
 * @ClassName user
 * @Description TODO
 * @Author 加辣椒了吗?
 * @Date 2021/9/21 20:42
 * @Version 1.0
 **/
@Data
@Entity
@Table(name = "t_user")
public class user 
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    private String email;


2.服务层

继承顺序jpa接口:
jparespository.java:

package com.example.respository;

import com.example.po.user;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * @ClassName jparespository
 * @Description TODO
 * @Author 加辣椒了吗?
 * @Date 2021/9/21 20:41
 * @Version 1.0
 **/
public interface jparespository extends JpaRepository<user,Integer> 
    public user save(user user);
    public void deleteById(Integer id);


3.控制层

package com.example.controller;

import com.example.po.user;
import com.example.respository.jparespository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

/**
 * @ClassName usercontroller
 * @Description TODO
 * @Date 2021/9/21 21:00
 * @Version 1.0
 **/
@Controller
public class usercontroller 

    @Autowired
    private jparespository jparespository;
    // 查看全部
    @GetMapping("/users")
    public String findAll(Model model) 
        List<user> all = jparespository.findAll();
        System.out.println(all);
        model.addAttribute("userlist",all);
        return "user";
    
    // 修改用户
    @PostMapping("/users/edit")
    public String edit(@RequestBody user user , Model model) 
        jparespository.save(user);
        List<user> all = jparespository.findAll();
        model.addAttribute("userlist",all);
        return "user";
    
    // 添加用户

    @PostMapping("/users/add")
    public String add(@RequestBody user user , Model model) 
        System.out.println(user);
        jparespository.save(user);
        List<user> all = jparespository.findAll();
        model.addAttribute("userlist",all);
        return "user";
    
    // 删除用户
    @PostMapping("/users/del")
    public String delete(@RequestBody user user, Model model) 
        System.out.println("11111");
        jparespository.deleteById(user.getId());
        List<user> all = jparespository.findAll();
        model.addAttribute("userlist",all);
        return "user";
    

4.thymeleaf 前端代码

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Getting Started: Serving Web Content</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" type="text/css" href="../css/semantic.min.css">
</head>
<body>

</br>
<div style="text-align: center">
  <button class="ui button" id="adduser">add</button>
  <button class="ui button" id="edituser">edit</button>
  <button class="ui button" id="deleteuser">delete</button>
</div>
</br>
<div style="padding-left: 400px">
  <table class="ui celled table" style="width: 500px;">
    <thead>
    <tr>
      <th>id</th>
      <th>name</th>
      <th>email</th>
    </tr>
    </thead>
    <tbody>
    <tr th:each="user:$userlist">
      <td data-label="id" th:text="$user.id"></td>
      <td data-label="name" th:text="$user.name"></td>
      <td data-label="email" th:text="$user.email"></td>
    </tr>
    </tbody>
  </table>
</div>

<div class="ui modal add">
  <div class="header">添加用户</div>
  <div class="content">
    <form class="ui form addform">
      <div class="field">
        <label>name</label>
        <input class="name" name="name" type="text">
        <label>email</label>
        <input class="email" name="email" type="text">
      </div>
      <div class="ui submit button">Submit</div>
      <div class="ui error message"></div>
    </form>
  </div>
</div>

<div class="ui modal edit">
  <div class="header">修改用户</div>
  <div class="content">
    <form class="ui form editform">
      <div class="field">
        <label>id</label>
        <input class="id2" name="id2" type="text">
        <label>name</label>
        <input class="name2" name="name2" type="text">
        <label>email</label>
        <input class="email2" name="email2" type="text">
      </div>
      <div class="ui submit button">Submit</div>
      <div class="ui error message"></div>
    </form>
  </div>
</div>

<div class="ui modal delete">
  <div class="header">请输入你要删除的用户id</div>
  <div class="content">
    <form class="ui form deleteform">
      <div class="field">
        <label>id</label>
        <input class="id3" name="id3" type="text">
      </div>
      <div class="ui submit button">Submit</div>
      <div class="ui error message"></div>
    </form>
  </div>
</div>

<script src="../js/jquery-1.11.3.min.js"> </script>
<script src="../js/semantic.min.js"></script>
<script>
  $(document).ready(function()
    var data = 
      id:0,
      name:"ct",
      email:"qq"
    
    // 添加事件
    $("#adduser").on("click",function()
      $('.add').modal('show');
    );
    // 编辑事件
    $("#edituser").on("click",function()
      $('.edit').modal('show');
    );
    // 删除事件
    $("#deleteuser").on("click",function()
      $('.delete').modal('show');
    );
    // 验证规则
    $(function () 
      $(".ui.form").form(
        fields:
          name:
            indentfier:'name',
            rules:[
              type   : 'empty',
              prompt : 'Please enter the value of name'
            ]
          ,
          email:
            indentfier:'email',
            rules:[
              type   : 'empty',
              prompt : 'Please enter the value of email'
            ]
          ,
          id2:
            indentfier:'id2',
            rules:[
              type   : 'empty',
              prompt : 'Please enter the value of id'
            ]
          ,
          name2:
            indentfier:'name2',
            rules:[
              type   : 'empty',
              prompt : 'Please enter the value of name'
            ]
          ,
          email2:
            indentfier:'email2',
            rules:[
              type   : 'empty',
              prompt : 'Please enter the value of email'
            ]
          ,
          id3:
            indentfier:'id3',
            rules:[
              type   : 'empty',
              prompt : 'Please enter the value of id'
            ]
          ,
        
      )
    )
    // 添加提交事件
    $(".addform").submit(function()
      // console.log($(".id").val())
      // console.log($(".name").val())
      // console.log($(".email").val())

      data.name = $(".name").val()
      data.email = $(".email").val()
      console.log(data)
      $.ajax(
        url: "/users/add",
        type: "POST",
        dataType:'json',
        contentType:'application/json;charset=UTF-8',
        data:JSON.stringify(data)
      );
      alert("添加成功!");
    );
    // 修改提交事件
    $(".editform").submit(function()
      // console.log($(".id2").val())
      // console.log($(".name2").val())
      // console.log($(".email2").val())
      data.id = $(".id2").val()
      data.name = $(".name2").val()
      data.email = $(".email2").val()
      console.log(data)
      $.ajax(
        url: "/users/edit",
        type: "POST",
        dataType:'json',
        contentType:'application/json;charset=UTF-8',
        data:JSON.stringify(data)
      );
      alert("修改成功!");
    );
    // 删除提交事件
    $(".deleteform").submit(function()
      data.id = $(".id3").val()
      $.ajax(
        url: "/users/del",
        type: "POST",
        dataType:'json',
        contentType:'application/json;charset=UTF-8',
        data:JSON.stringify(data)
      );
      alert("删除成功!");
    );
  );


</script>
</body>
</html>

5.演示效果




总结

@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!

以上是关于spring boot:实现jpa+thymeleaf 用户管理的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot中使用Spring Data JPA示例

spring boot 系列之四:spring boot 整合JPA

在Spring Boot中使用Spring-data-jpa实现分页查询(转)

spring boot2 整合JPA(特别完整!)

spring boot:实现jpa+thymeleaf 用户管理

spring boot:实现jpa+thymeleaf 用户管理