zoukankan      html  css  js  c++  java
  • SpringBoot整合SpringDataJPA

    一、pom.xml添加依赖

    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--spring data jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
        <!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>

    二、配置数据源以及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<DeptDTO, Integer>, JpaSpecificationExecutor<DeptDTO>, 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<DeptDTO> 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<DeptDTO> 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());
        }
    }
  • 相关阅读:
    (六)cmockery中的assert_macro分析
    (五)cmockery中的assert_module分析
    (三)cmockery中的消息打印以及可变参数相关总结
    (四)cmockery中allocate_moudle分析
    (二)cmockery中run_tests.c分析
    大家分层架构 事务
    北冰洋教Myeclipse的创建 项目名
    MYSQL第一章 创建表 修改表名 删除字段 添加字段 修改地段名
    HTML-------实现图片阴影
    HTML 制作爱奇艺播放器 排版
  • 原文地址:https://www.cnblogs.com/myitnews/p/11875379.html
Copyright © 2011-2022 走看看