Springboot中JPA数据库访问的使用方法

1、新建springboot工程,选中,JPA、JDBC、MYSQL;
2、在配置文件中配好相应的连接信息,以下是YML格式

spring:
  datasource:
    url: jdbc:mysql://10.0.75.1:3306/jpa?useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    password: 123456
    username: root
  jpa:
    hibernate:
#      策略是更新或创建数据表结构
      ddl-auto: update
#    可以控制台显示SQL
    show-sql: true
  thymeleaf:
    cache: false

3、建实体类,放在类路径下的“entity”目录下,配置好GET、SET方法,为使自动封装有效,需要配置好空的构造方法;

//使用JPA注解,配置映射关系
@Entity  //告诉JPA这是一个实体类,和数据表映射
//使用以下注解来指定本实体类与哪个数据表对应,如果不指定name,则表名就是类的小写
@Table(name = "tbl_user")

public class user {
    @Id   //标注为这是一个主键
    //以下标注为自增主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "last_name",length = 20)  //这是数据表的一个字段
    private String name;
    //如name省略,则列名就是属性名
    @Column(length = 50)
    private String email;

4、建立实体类对应的repository

package com.backman.jpa.repository;

import com.backman.jpa.entity.user;
import org.springframework.data.jpa.repository.JpaRepository;

//以下泛型中,第一个是要操作的实体类名(与数据表对应的),第二个参数是表中主键的类型
//继承JpaRepository就有了CRUD和分页及排序功能
public interface UserRepository extends JpaRepository<user,Integer> {
}

5、建立Controller负责具体的数据操作

package com.backman.jpa.controller;

import com.backman.jpa.entity.user;
import com.backman.jpa.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
public class UserController {

    @Autowired
    UserRepository userRepository;

    String msg;

    @GetMapping("/users")
    public String getAll(Model model){
//        List<user> users = userRepository.findAll();
        List<user> users = userRepository.findAll(
                new Sort(Sort.Direction.DESC,"id")
        );
        model.addAttribute("users",users);
        model.addAttribute("msg",msg);
        msg = "";
        return "D_lists";
    }

    //添加用户
    @GetMapping("/user")
    public String toAddUser(Model model){
        model.addAttribute("operator","add");
        return "UserAdd";
    }

    @PostMapping("/user")
    public String addUser(user user){
        user save = userRepository.save(user);
        msg = "用户【" + user.getName() + "】添加成功!";
        return "redirect:/users";
    }

    //修改用户
    @GetMapping("/user/{id}")
    public String toEditUser(@PathVariable("id") Integer id,Model model){
        user user = userRepository.getOne(id);
        model.addAttribute("user",user);
        model.addAttribute("operator","edit");
        return "UserAdd";
    }

    @PutMapping("/user")
    public String editUser(user user,Model model){
        userRepository.saveAndFlush(user);
        msg = "用户【" + user.getName() + "】修改完成";
        return "redirect:/users";
    }

    //删除用户
    @DeleteMapping("/user/{id}")
    public String deleteUser(@PathVariable("id") Integer id){
        user user = userRepository.getOne(id);
        userRepository.deleteById(id);
        msg = "用户【" + user.getName() + "】已被成功删除";
        return "redirect:/users";
    }
}

6、对应使用的前端是thymeleaf模板引擎
以下是users列表页

<div class="table-responsive">
    <table class="table table-striped table-sm">
      <thead>
      <tr>
        <th>ID号</th>
        <th>用户名称</th>
        <th>EMAIL</th>
        <th>操作</th>
      </tr>
      </thead>
      <tbody>
      <tr th:each="user:${users}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.name}"></td>
        <td><a class="btn btn-sm btn-primary" th:href="@{/user/} + ${user.id}">修改</a>&nbsp;
            <button th:attr="del_url=@{/user/} + ${user.id},del_user=${user.name}" class="btn btn-sm btn-danger del_btn" type="submit">删除</button>
        </td>
      </tr>
      </tbody>
    </table>
      <form id="del_form" method="post">
          <input type="hidden" name="_method" value="delete" />
      </form>
  </div>
  <script>
    $(".del_btn").click(function () {
        if(confirm("确定要删除这个用户【"+ $(this).attr("del_user") +"】吗?"))
            $("#del_form").attr("action",$(this).attr("del_url")).submit();
        else
            return false;
    })
</script>

以下是user的新增和修改页

 <div class="table-responsive">
        <form th:action="@{/user}" method="post">
            <input type="hidden" name="_method" value="put" th:if="${operator == 'edit'}" />
            <input type="hidden" name="id" th:value="${user.id}" th:if="${operator == 'edit'}" />
            <div class="form-group">
                <label>用户名称</label>
                <input type="text" class="form-control" name="name" th:value="${operator == 'edit' ? user.name : ''}" placeholder="用户名称">
            </div>
            <div class="form-group">
                <label>EMAIL</label>
                <input type="text" class="form-control" name="email" th:value="${operator == 'edit' ? user.email : ''}" placeholder="EMAIL">
            </div>
            <button class="btn btn-danger" type="submit" th:text="${operator == 'add' ? '添加' : '修改'}">提交</button>
        </form>
    </div>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值