新网创想网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

SpringBoot如何整合SpringDataJPA

这篇文章主要介绍了SpringBoot整合SpringDataJPA代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

创新互联是一家专注于网站设计制作、成都做网站与策划设计,个旧网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:个旧等地区。个旧做网站价格咨询:13518219792

一、pom.xml添加依赖


  
  
    org.springframework.boot
    spring-boot-starter-web
  
  
  
    org.springframework.boot
    spring-boot-starter-data-jpa
  
  
  
    mysql
    mysql-connector-java
    runtime
  
  
  
    com.alibaba
    fastjson
    1.2.62
  
  
  
    org.springframework.boot
    spring-boot-starter-test
  

二、配置数据源以及jpa

server:
 port: 8080

#数据源
spring:
 datasource:
  url: jdbc:mysql://192.168.178.5:12345/cloudDB01?useUnicode=true&characterEncoding=UTF-8
  username: root
  password: 123456
  driver-class-name: com.mysql.jdbc.Driver
 jpa:
  database: MySQL
  show-sql: true
  hibernate:
   naming:
    physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

三、创建实体

@Entity
@Table(name = "dept")
public class DeptDTO {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "deptno")
  private Integer deptNo;
  @Column(name = "dname")
  private String dName;
  @Column(name = "db_source")
  private String dbSource;

  public Integer getDeptNo() {
    return deptNo;
  }

  public void setDeptNo(Integer deptNo) {
    this.deptNo = deptNo;
  }

  public String getdName() {
    return dName;
  }

  public void setdName(String dName) {
    this.dName = dName;
  }

  public String getDbSource() {
    return dbSource;
  }

  public void setDbSource(String dbSource) {
    this.dbSource = dbSource;
  }
}

四、创建jpa

public interface DeptRepository extends JpaRepository, JpaSpecificationExecutor, Serializable {
}

我们DeptRepository 继承了JpaRepository接口(SpringDataJPA提供的简单数据操作接口)、JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)、Serializable(序列化接口)。我们并不需要做其他的任何操作了,因为SpringBoot以及SpringDataJPA会为我们全部搞定,SpringDataJPA内部使用了类代理的方式让继承了它接口的子接口都以spring管理的Bean的形式存在,也就是说我们可以直接使用@Autowired注解在spring管理bean使用

五、创建控制器controller

@RestController
@RequestMapping("/dept")
public class DeptController {

  @Autowired
  private DeptRepository deptRepository;
  
  @RequestMapping(value = "/findAll", method = {RequestMethod.POST})
  public List findAllDept(){
    return deptRepository.findAll(); //findAll是jpa提供的查询接口
  }

  @RequestMapping(value="/addDept", method={RequestMethod.POST})
  public DeptDTO saveDept(@RequestBody DeptDTO deptDTO){
    deptRepository.save(deptDTO);
    return deptDTO;
  }

}

六、测试controller

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {JpaApplication.class}) //是该项目的启动类
@WebAppConfiguration
@ContextConfiguration
public class DeptControllerTest {

  @Autowired
  private WebApplicationContext context;

  private MockMvc mvc;

  @Before
  public void setUp() throws Exception {
    mvc = MockMvcBuilders
        .webAppContextSetup(context)
        .build();
  }

  @Test
  public void testQuery() throws Exception {
    MvcResult result=mvc.perform(MockMvcRequestBuilders.post("/dept/findAll")).andReturn();
    MockHttpServletResponse response = result.getResponse();
    String content = response.getContentAsString();
    List deptDTOS = JSON.parseArray(content, DeptDTO.class);
    for(DeptDTO deptDTO : deptDTOS){
      System.out.println(deptDTO.getdName());
    }
  }

  @Test
  public void testAdd() throws Exception {
    DeptDTO deptDto = new DeptDTO();
    deptDto.setdName("海盗船");
    deptDto.setDbSource("cloudDB1");
    System.out.println(JSON.toJSONString(deptDto));
    MvcResult result=mvc.perform(MockMvcRequestBuilders.post("/dept/addDept")
        .contentType(MediaType.APPLICATION_JSON).content(JSON.toJSONString(deptDto)))
        .andReturn();
    MockHttpServletResponse response = result.getResponse();
    String content = response.getContentAsString();
    DeptDTO deptDTO = JSON.parseObject(content, DeptDTO.class);
    System.out.println(deptDTO.getDeptNo());
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。


当前文章:SpringBoot如何整合SpringDataJPA
当前路径:http://wjwzjz.com/article/pidjpc.html
在线咨询
服务热线
服务热线:028-86922220
TOP