zoukankan      html  css  js  c++  java
  • 五、spring-data-Jpa 数据库操作

    概述:java persistence API定义了一些列对象持久化的标准,目前实现这一规范的产品有hibernate、topLink

          1、pom.xml中添加组件

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jpa</artifactId>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-comector-java</artifactId>
    </dependency>

          2、配置数据库相关信息

          在application.yml中配置(在这里配置生产环境和开发环境都可以使用)
    idea中键入spring.datasoure. driver快捷输入(我也忘了driver前是否加空格了)
    datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/dbgril
        username: root
        password: root
    3、一些数据库的相关操作
       create 
          每次启动应用创建一个空表,若数据库中有同名表则把旧表删除后再创建
       update
          每次启动应用创建一个表,如果数据库表中有数据,仍然保留数据
       create-drop
          应用停止的时候,将数据库中的表删除
       none
          默认的,什么都不做
       Validate
          验证类中的属性和表结构是否一致,若不一致则报错
    spring:
      profiles:
        active: dev
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/dbgril
        username: root
        password: root
      jpa:
        hibernate:
          ddl-auto: update
        show-sql: true
    4、对数据的一些操作
    PUT请求方式body不能使用form-data,需要使用x-www-form-urlencoded
      1. 创建实体类
            @Entity 在类名上需要添加该注解
          @Id 在id变量上添加该注解声明主键
          @GeneratedValue 在id变量上声明该注解表示自动新增
            添加get、set方法以及构造方法
      2. 声明一个接口并继承JpaRepository<T,ID>
          T:实体类的类名
           ID:Id的数据类型
    import org.springframework.data.jpa.repository.JpaRepository;
    
    import java.util.List;
    
    public interface GrilRepository extends JpaRepository<Gril,Integer>{
        //拓展通过年龄查询
        public List<Gril> findByAge(Integer age);
    }
      3. 建一个类用 @RestController注解,
            使用 @Autowired 将接口类注入(简单示例)
      4.使用对象的方式进行数据库的交互
        创建一个方法使用 Mapping 注解,并在方法内使用jpa提供的数据库的操作方法
          findAll()  查询所有
          findOne(id) 通过id查找一个数据库对象
          delete(id) 通过id删除一个数据库对象
          save(S s)  新增或者修改
    (如果不传主键id进行新增操作;如果传递了主键id,先在数据库中根据id查找是否有数据,如果没有则新增,如果有则修改)
     如果遇到修改部分数据的时候,使用对象的方式保存会导致其它的字段赋值为null
        第一种解决方式:使用原生的sql进行更新
        第二种解决方式:先进行findOne(id)查找对象,然后set完要更新的字段,最后进行save(gril)更新
      5.拓展通过其它变量查询数据库值
      在接口中定义抽象方法;
    public List<Gril> findByAge(Integer age);
    附:code示例
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    public class GrilController {
        @Autowired
        private GrilRepository grilRepository;
        //查询女生列表
        @GetMapping(value = "/grils")
        public List<Gril> girlList(){
            List<Gril> list = grilRepository.findAll();
            return list;
        };
        //添加一个女生
        @PostMapping(value = "/grils")
        public Gril grilAdd(@RequestParam("cupSize")String cupSize,
                              @RequestParam("age")Integer age){
            Gril gril = new Gril();
            gril.setCupSize(cupSize);
            gril.setAge(age);
    
            return  grilRepository.save(gril);
        }
        //通过id查询一个女生
        @GetMapping(value = "/grils/{id}")
        public Gril grilFindOne(@PathVariable("id") Integer id){
            Gril gril = grilRepository.findOne(id);
            return gril;
        }
        //通过id更新一个女生
        @PutMapping(value = "/grils/{id}")
        public Gril grilUpdate(@PathVariable("id")Integer id,
                               @RequestParam("cupSize")String cupSize,
                               @RequestParam("age")Integer age){
            Gril gril = new Gril();
            gril.setId(id);
            gril.setCupSize(cupSize);
            gril.setAge(age);
    
            return  grilRepository.save(gril);
        }
    //通过id删除一个女生
        @DeleteMapping(value = "/grils/{id}")
        public void grilDlete(@PathVariable("id")Integer id){
            grilRepository.delete(id);
        }
    
        //通过年龄查询
        @GetMapping("/grils/age/{age}")
        public List<Gril> findByAge(@PathVariable(value = "age") Integer age){
    
              return  grilRepository.findByAge(age);
    
        }
    }
  • 相关阅读:
    idea找不到或无法加载主类
    Scala核心编程_第09章 面向对象编程(高级特性)
    spring源码:学习线索
    Redis
    spring源码:Aware接口
    spring源码:核心组件(li)
    java socket编程
    spring源码:ApplicationContext的增强功能(li)
    spring源码:web容器启动
    spring源码:BeanPostProcessor(li)
  • 原文地址:https://www.cnblogs.com/404code/p/10569151.html
Copyright © 2011-2022 走看看