09-spring-data-jpa

  1. pom.xml中添加JPA、mysql依赖

    <!--jpa依赖开始-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!--jpa依赖结束-->
    <!--MySQL依赖开始-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
        <version>8.0.13</version>
    </dependency>
    <!--MySQL依赖结束-->
     注意:这里要把数据库的版本带上,因为MySQL8版本过高,而spring boot的默认版本不是8

2.在application-dev.properties中添加mysql和jpa的配置项

#mysql
spring.datasource.url=jdbc:mysql://localhost:3306/ss?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#jpa
#是否根据实体更新数据库
spring.jpa.hibernate.ddl-auto= none
#显示sql语句
spring.jpa.show-sql=true
#解决@column 注解命名失效问题
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    注意

MySQL8.0.13的驱动以及连接语句

        时区设置:  &serverTimezone=GMT%2B8  (北京东八区)

        https://blog.csdn.net/love20yh/article/details/80799610

                     MySQL在高版本需要指明是否进行SSL连接

手动设置SSL连接为false

不指明SSL是否进行连接会出现Mon Dec 17 10:37:20 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.错误

       在mysql连接上加上&useSSL=false(这样不会出现jdk证书问题)  

3.在entity下添加Platform类

package com.study.model.entity;

import io.swagger.annotations.ApiModel;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;

@ApiModel(description = "平台")
@Entity(name = "Platform")
@Table(name = "Platform")
public class Platform {
    @Id
    @Column(name = "Id")
    private String id;
    @Column(name = "Code")
    private String code;
    @Column(name = "Name")
    private String name;
    @Column(name = "useforbudget")
    private Boolean useForBudget;
    @Column(name = "order")
    private Integer order;
    @Column(name = "bewrite")
    private String bewrite;
    @Column(name = "createuser")
    private String createUser;
    @Column(name = "modifyuser")
    private String modifyUser;
    @Column(name = "createtime")
    private Date createTime;
    @Column(name = "modifytime")
    private Date modifyTime;
    @Column(name = "isdeleted")
    private Boolean isDeleted;

    public String getId() {
        return id;
    }

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

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

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

    public Boolean getUseForBudget() {
        return useForBudget;
    }

    public void setUseForBudget(Boolean useForBudget) {
        this.useForBudget = useForBudget;
    }

    public Integer getOrder() {
        return order;
    }

    public void setOrder(Integer order) {
        this.order = order;
    }

    public String getBewrite() {
        return bewrite;
    }

    public void setBewrite(String bewrite) {
        this.bewrite = bewrite;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public String getModifyUser() {
        return modifyUser;
    }

    public void setModifyUser(String modifyUser) {
        this.modifyUser = modifyUser;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getModifyTime() {
        return modifyTime;
    }

    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }

    public Boolean getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(Boolean isDeleteddeleted) {
        this.isDeleted = isDeleted;
    }

    @Override
    public String toString() {
        return "Platform{" +
                "id='" + id + '\'' +
                ", code='" + code + '\'' +
                ", name='" + name + '\'' +
                ", useForBudget=" + useForBudget +
                ", order=" + order +
                ", bewrite='" + bewrite + '\'' +
                ", createUser='" + createUser + '\'' +
                ", modifyUser='" + modifyUser + '\'' +
                ", createTime=" + createTime +
                ", modifyTime=" + modifyTime +
                ", isDeleted=" + isDeleted +
                '}';
    }
}

注意事项:nameorder等关键词需要加``

时间目前用的是Date类型

@Column不能填写createTime这样驼峰命名,会转化成create_time

解决方法:改为全部小写createtime

或者在application-dev.properties中添加增加

spring.jpa.hibernate.naming.physical-strategy

=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

还有要把isdeleted的get和set方法写成上面的形式,不然可能会报错

4.在repository下添加PlatformRepository类

package com.study.model.repository;

import com.study.model.entity.Platform;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface PlatformRepository extends JpaRepository<Platform, Long>, JpaSpecificationExecutor<Platform> {
    Platform findByName(String platformName);

    Platform findByNameAndIsDeleted(String platformName,boolean isDeleted);

    @Query("select A from Platform A where A.useForBudget=true and A.name=:platformName")
    Platform findByNameForBudget(@Param("platformName")String platformName);

    Page<Platform> findAll(Pageable pageable);

    Page<Platform> findByName(String platformName, Pageable pageable);

    int countByName(String platformName);

    int deleteById(String id);

    int deleteByName(String platformName);
}

5. 在service下添加PlatformService类

package com.study.model.service;

import com.study.model.entity.Platform;
import com.study.model.repository.PlatformRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.UUID;

@Service
public class PlatformService {

    //持久层
    @Autowired
    private PlatformRepository platformRepository;

    public Platform findByName(String platformName) {
        return platformRepository.findByName(platformName);
    }

    public Platform findUsedByName(String platformName) {
        return platformRepository.findByNameAndIsDeleted(platformName,false);
    }

    public Platform findByNameForBudget(String platformName) {
        return platformRepository.findByNameForBudget(platformName);
    }

    public Page<Platform> findAll(int page, int size){
        Sort sort = new Sort(Sort.Direction.DESC, "id");
        Pageable pageable = new PageRequest(page, size, sort);
        return platformRepository.findAll(pageable);
    }

    public Page<Platform> findByNameForPage(String platformName, Pageable pageable){
        return platformRepository.findByName(platformName,pageable);
    }

    public int insert(String platformName){
        Platform platform = new Platform();
        platform.setId(UUID.randomUUID().toString());
        platform.setCode(platformName);
        platform.setName(platformName);
        platform.setCreateTime(new Date());
        platform.setModifyTime(new Date());
        platform.setCreateUser("00000000-0000-0000-0000-000000000001");
        platform.setModifyUser("00000000-0000-0000-0000-000000000001");
        platform.setOrder(0);
        platform.setUseForBudget(false);
        platform.setIsDeleted(false);

        if(platformRepository.countByName(platformName) > 0){
            return -1;
        }
        platformRepository.save(platform);
        return 1;
    }
}

6.在controller下添加PlatformController类

 

package com.study.model.controller;

import com.study.model.entity.Platform;
import com.study.model.service.PlatformService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(value = "/platform")
public class PlatformController {
    private static final Logger logger= LoggerFactory.getLogger(PlatformController.class);
    @Autowired
    private PlatformService platformService;
    @ApiOperation(value = "获取平台信息",notes = "根据(platformName)获取相应平台信息")
    @RequestMapping(value = "/{platformname}",method = RequestMethod.GET)
    public Platform get(@PathVariable("platformname") String platformname){
        Platform platform =platformService.findByNameForBudget(platformname);
        return platform;
    }
    @ApiOperation(value="获取平添列表",notes = "根据URL中的pageIndes/pageSize获取平台列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageIndex",value = "页码",required = true,paramType = "query",dataType = "int"),
            @ApiImplicitParam(name = "pageSize",value = "每页记录数",required = true,paramType = "query",dataType = "int")
    })
    @RequestMapping(value = "/getList",method = RequestMethod.GET)
    public Page<Platform> getList(@RequestParam int pageIndex, @RequestParam int pageSize){
        return platformService.findAll(pageIndex,pageSize);
    }
    @ApiOperation(value = "获取平台列表",notes = "根据URL中的pageIndex、pageSize获取平台列表")
    @ApiImplicitParam(name = "name",value = "平台名称",required = true,paramType = "query",dataType = "String")
    @RequestMapping(value = "/insert",method = RequestMethod.GET)
    public int insert(@RequestParam String name){
        return platformService.insert(name);
    }
}

7.建一个名为ss的数据库和名为platform的表,并先在数据库里参加一条字段再去访问

8.访问

http://localhost:8080/platform/tmall super    

http://localhost:8080/platform/getList?pageIndex=1&pageSize=3

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值