美文网首页spring-boot
springboot常用starter①-spring-data

springboot常用starter①-spring-data

作者: 一个好汉 | 来源:发表于2021-06-30 23:58 被阅读0次
spring-data-jpa

数据库准备

先整个表先

CREATE TABLE `operator` (
  `id` bigint(20) PRIMARY KEY   AUTO_INCREMENT COMMENT '唯一标示',
  `code` varchar(20) DEFAULT NULL COMMENT '编码',
  `name` varchar(64) DEFAULT NULL COMMENT '名称',
  `status` char(1) DEFAULT '1' COMMENT '状态 1启用 0 停用',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

新建module

创建module


填入坐标

引入依赖

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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

编写一个与数据库对应的实体类


import lombok.Data;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * 操作员实体
 *
 */
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
public class Operator implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = -3752294262021766827L;
    /**
     * 唯一标示
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    /**
     * 编码
     */
    private String code;
    /**
     * 名称
     */
    private String name;

    /**
     * 创建时间
     */
    @CreatedDate //自动创建
    private Date gmtCreate;
    /**
     * 修改时间
     */
    @LastModifiedDate //有修改时 会自动时间
    private Date gmtModified;
}

编写控制层 测试

package cn.gd.cz.hong.springjdademo.controller;

import cn.gd.cz.hong.springjdademo.dao.OperatorDao;
import cn.gd.cz.hong.springjdademo.entity.Operator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * hello
 */
@Slf4j
@RestController
@RequestMapping("/operator")
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }

    @Autowired
    OperatorDao operatorDao;

    @Transactional
    @PostMapping("/add")
    public String addUser(Operator operator) {
        log.info("新增用户:{}", operator);
        operator = operatorDao.save(operator);
        return "新增成功,返回用户id为:" + operator.getId();
    }

    @GetMapping("/find/{id}")
    public Operator findUser(@PathVariable Long id) {
        log.info("查找用户ID:{}", id);
        return operatorDao.findById(id).get();
    }

    @PostMapping("/del/{id}")
    public String delUser(Long id) {
        log.info("删除用户ID:{}", id);
        Operator operator = new Operator();
        operator.setId(id);
        operatorDao.delete(operator);
        return "用户id为:" + id + ",已被删除!";
    }

    @GetMapping("/find/{code}/{name}")
    public List<Operator> findUserByCodeAndName(@PathVariable("code") String code, @PathVariable("name")String name) {
        log.info("命名规则方式,查找用户:编码:{},名称:{}", code, name);
        return operatorDao.findByCodeAndName(code, name);
    }

    @GetMapping("/find/paging/{code}")
    public Page<Operator> findUserByCodePagin(@PathVariable("code") String code){
        log.info("分页模式,查找用户:编码:{}", code);
        //这里注意 page是从0开始的
        return operatorDao.findByCode(code, PageRequest.of(0,10));
    }

    @GetMapping("/find/sql/{code}")
    public List<Operator> findUserByQuerySql(@PathVariable("code") String code){
        log.info("自定义sql方式,查找用户:编码:{}", code);
        return operatorDao.queryByCode(code);
    }
}

验证

为了测试方便
可以整合swagger

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>

swagger配置

package cn.gd.cz.hong.springjdademo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * swagger2 配置
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.gd.cz.hong.springjdademo.controller"))
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder()
                        .title("SpringBoot整合Swagger")
                        .description("SpringBoot整合Swagger,详细信息......")
                        .version("9.0")
                        .contact(new Contact("hong", "blog.csdn.net", "aaa@gmail.com"))
                        .license("The Apache License")
                        .licenseUrl("http://www.baidu.com")
                        .build());
    }
}


新增一个用户
这里没有在controller加上@Transactional 的时候没有新增成功 这里需要加上
我们看到新增的时候


新增一个用户 新增的用户

通过ID查询操作员

查询

相关文章

网友评论

    本文标题:springboot常用starter①-spring-data

    本文链接:https://www.haomeiwen.com/subject/qjedultx.html