Spring Boot数据库基本操作spring data jpa

本文介绍如何在Spring Boot项目中整合JPA与MySQL,包括添加依赖、配置数据库、创建实体类、定义Repository及Controller,实现数据库的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要在pom.xml中添加依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

1、首先在本地创建一个数据库dbgirl。
配置文件中增加数据库配置:

  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgirl
    username: root
    password: wangyinpeng
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

2、创建对象Girl

package com.hytxwz.girl;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity   //表示该类对应数据库中的某个表
public class Girl {

    @Id
    @GeneratedValue  //自增
    private Integer id;
    private String cupSize;
    private Integer age;

    public Girl() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public void setAge() {
    }
}

注意用到的三个新的注解:
@Entity //表示该类对应数据库中的某个表
@Id
@GeneratedValue //自增
此时运行程序看到数据库中出现girl表
3、数据库的常用操作:
数据库的增删改查通过controller类中的方法来实现;
首先新建一个GirlRepository接口继承JpaRespository<Girl, Integer(id类型)>;
然后在controller中调用GirlRepository中的方法即可实现对数据库的增删改查。

GirlRepository :

package com.hytxwz.girl;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("girlRepository")
public interface GirlRepository extends JpaRepository<Girl, Integer> {

    //通过其他字段查询对象(手动增加的方法)
    List<Girl> findGirlsByAge(Integer age); //注意方法名格式 by+属性

}

GirlController:

package com.hytxwz.girl;

import com.mysql.fabric.xmlrpc.base.Param;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class GirlController {

    @Resource(name = "girlRepository")
    private GirlRepository girlRepository;

    @GetMapping(value = "/girls")   //访问girls路径得到女生列表
    public List<Girl> girlList(){
        return girlRepository.findAll();
    }

    @GetMapping(value = "/newGirl")    //访问时新增对象
    public Girl addGirl(@RequestParam("cupSize") String cupSize,
                        @RequestParam("age") Integer age){
        Girl girl = new Girl();
        girl.setCupSize(cupSize);
        girl.setAge(age);

        return girlRepository.save(girl);
    }

    @GetMapping(value = "/delGirl/{id}")     //访问时删除对象
    public void delGirl(@PathVariable("id") Integer id){
        girlRepository.deleteById(id);
    }

    @GetMapping(value = "/findGirl/{id}")     //访问时查询对象
    public Girl findGirlById(@PathVariable("id") Integer id){
        return girlRepository.findById(id).get();
    }

    @GetMapping(value = "/updGirl/{id}")     //访问时更新对象
    public Girl updateGirl(@PathVariable("id") Integer id,
                           @RequestParam("cupSize") String cupSize,
                           @RequestParam("age") Integer age){
        Girl girl = girlRepository.findById(id).get();
        girl.setCupSize(cupSize);
        girl.setAge(age);
        return girlRepository.save(girl);
    }

    @GetMapping(value = "/findGirlsByAge/{age}")     //通过其他字段查询对象
    public List<Girl> findGirlsByAge(@PathVariable("age") Integer age){
        return girlRepository.findGirlsByAge(age);
    }

}

4、开启事务使用注解@Transactional

    //测试事务
    @Transactional
    public void addTwo(){
        Girl g1 = new Girl();
        g1.setAge(16);
        g1.setCupSize("B");
        girlRepository.save(g1);

        Girl g2 = new Girl();
        g2.setAge(18);
        g2.setCupSize("C");
//        int i = 1/0;
        girlRepository.save(g2);
    }

5、简单的表单验证@Valid
在这里插入图片描述
@Min/@Max中value属性为最大最小值,message属性是错误提示信息。
在这里插入图片描述
@Valid放在需要验证的属性前面,BindingResult对象中保存验证结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值