Spring boot(三)

1.Spring-Data-Jpa

JPA(Java Persistence API) 定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。
本次实例采用mysql数据库

1.1.添加db依赖

<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.2.相关配置

在yml中配置

# db 配置
  datasource:
    driver-class-name: 驱动名称
    url: 数据库url
    username: 数据库用户名
    password: 数据库密码
# jpa 配置
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

1.2.1.启动服务创建db表

  • 在yml中配置
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

ddl-auto为create,会每次在服务从启时,创建db表

  • model对象
package com.molly.model;

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

/**
 * 描述:自动创建数据库表
 * 作者:夜夜
 * 创建日期:2017-01-29.
 */
@Entity
public class Person {
    @Id
    @GeneratedValue
    private Integer id;

    private String name;

    public Person() {
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

@Entity 实体注解
@Id
@GeneratedValue
表示主键

ddl-auto: create 启动服务器会自动将在db中的表person drop在重新生成表person
ddl-auto: update 如果表里面有数据,则不会drop在创建,会将表保留
常用采取update

2.RestFul API接口实例

操作person类,对其进行增添改查

  • 创建PersonController
@RestController
public class PersonController { 
}
  • 创建操作数据库的接口文件
    PersonRepository继承自JpaRepository
public interface PersonRepository extends JpaRepository<Person,Integer>{
}

其中Person为数据表对应的实体文件,Integer为表主键类型

2.1.功能:获取列表

 请求类型 :get 
 请求路径:http://localhost:8081/molly/persons

代码

@RestController
public class PersonController {

    @Autowired
    private PersonRepository personRepository;

    @GetMapping(value = "/persons")
    public List<Person> personList(){
        return  personRepository.findAll();

    }
}

2.2. 功能:创建一条记录

请求类型 :post
请求路径:
这里写图片描述
代码:

   /**
     * 创建一条记录
     * @return
     */
    @PostMapping(value = "/persons")
    public Person personAdd(@RequestParam("name") String name){
        Person person = new Person();
        person.setName(name);
        return  personRepository.save(person);

    }

2.3. 功能:根据id查询一条记录

请求类型 :get
请求路径:http://localhost:8081/molly/persons/1

代码:

/**
  * 根据id查询一条记录
  * @return
*/
@GetMapping(value = "/persons/{id}")
public Person personFindOne(@PathVariable("id") Integer id){
    return  personRepository.findOne(id);
    }

2.4. 功能:根据id更新一条记录

请求类型 :put
请求路径:
这里写图片描述
代码
/**
* 根据id更新一条记录
* @return
*/
@PutMapping (value = “/persons/{id}”)
public Person personUpdate(@PathVariable(“id”) Integer id,
@RequestParam(“name”) String name){
Person person = new Person();
person.setId(id);
person.setName(name);
return personRepository.save(person);

}

2.5. 功能:根据id删除一条记录

请求类型 :delete
请求路径:
这里写图片描述
代码:

    /**
     * 根据id删除一条记录
     * @return
     */
   @DeleteMapping(value = "/persons/{id}")
   public void personDelete(@PathVariable("id") Integer id){
       personRepository.delete(id);
   }

2.6.扩展查询

根据名字查询数据

  • 在repository里面加入
public interface PersonRepository extends JpaRepository<Person,Integer>{
    // 通过名字来查询
    public List<Person> findByName(String name);
}

注意,findByName的格式必须如此

  • 在controller里面
    /**
     * 根据name查询一条记录
     * @return
     */
    @GetMapping(value = "/persons/name/{name}")
    public List<Person> personListByName(@PathVariable("name") String name){
        return  personRepository.findByName(name);

    }

请求格式:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值