JPA自動建表測試筆記

1.Maven的pom.xml中的依賴

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

application.properties中的一些MySQL配置

pring.datasource.url=jdbc:mysql://127.0.0.1/book?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=root
spring.datasource.password=rootroot
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.thymeleaf.cache=false
server.port=8080

實現(xiàn)類的文件結(jié)構(gòu)和一些接口實現(xiàn):

2.png

詳細(xì)見demo地址

https://gitee.com/xgkp/Spring8_2_5.git

測試文件中的必要代碼:

@RunWith(SpringRunner.class)
@SpringBootTest
//@Transactional
public class ArticleServiceImplTest {
    @Autowired
    private ArticleRepository articleRepository;

    @Test
    public void  testQuery(){
        List<Article> list = articleRepository.findAll();
        for (Article article : list){
            System.out.println(article);
        }
    }

    @Test
    public void testRollBank(){
        Article article = new Article();
        article.setKeyword("keyword");
        article.setTitle("title");
        article.setAvaiable(true);
        article.setType("圖");
        article.setDescription("描述");
        article.setBody("body");
        articleRepository.save(article);
    }
}

執(zhí)行測試進(jìn)行自動化建表和添加數(shù)據(jù)


3.png

Article實體類中的代碼:

@Entity
@Table(name = "article")
public class Article {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    public Article() {
    }

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    @Column(nullable = false,unique = true)
    @NotEmpty(message = "標(biāo)題不能為空")
    private String title;

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Boolean getAvaiable() {
        return avaiable;
    }

    public void setAvaiable(Boolean avaiable) {
        this.avaiable = avaiable;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    @Column(columnDefinition = "enum('圖','文','圖文')")
    private String type;

    private Boolean avaiable  = Boolean.FALSE;

    @Size(min = 0,max = 20)
    private String keyword;

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public String getKeyword() {
        return keyword;
    }

    @Size(max = 255)
    private String description;
    @Column(nullable = false)
    private String body;

    @Transient
    private List keywordsList;

    public List getKeywordsList(){
        return Arrays.asList(this.keyword.trim().split("|"));
    }

    public void  setKeywordsList(List keywordsLists){
        this.keywordsList = keywordsLists;
    }

}

Respository中的核心代碼

public interface ArticleRepository extends JpaRepository<Article, Long> {
    Article findArticleById(Long id);
}

父類ArticleService聲明

public interface ArticleService {
    public List<Article> getArticleList();
    public Article findArticleById(Long id);
}

public class ArticleServiceImpl implements ArticleService注意這里的類和接口的聲明和實現(xiàn)

public class ArticleServiceImpl implements ArticleService {
    @Autowired
    private ArticleRepository articleRepository;

    @Override
    public List<Article> getArticleList() {
        return articleRepository.findAll();
    }

    @Override
    public Article findArticleById(Long  id) {
        return articleRepository.getById(id);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容