第08講 連接到MySQL數據庫04之jpa

數據庫沿用上次的數據庫

1使用jpa鏈接數據庫

修改pom.xml文件,添加兩個依賴庫:

		<!-- Spring Data JPA 依賴 :: 數據持久層框架 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<!-- h2 數據源連接驅動 -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.62</version>
		</dependency>

更新。

2 新建實體Author

在包com.example.demo.models新建類Author,Author.java代碼如下:

package com.example.demo.models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import com.alibaba.fastjson.JSON;

@Entity
@Table(name = "authors")
public class Author {
	/**
	 * id
	 */
	@Id
	@GeneratedValue
	private Long id;

	/**
	 * 作者名字
	 */
	@Column(nullable = false)
	private String name;

	/**
	 * 作者年齡
	 */
	@Column(nullable = false)
	private int age;

	/**
	 * 簡介
	 */
	@Column(nullable = false)
	private String introduction;

	/**
	 * 空參構造
	 */
	public Author() {
	}

	/**
	 * 有參構造
	 */
	public Author(String name, int age, String introduction) {
		this.name = name;
		this.age = age;
		this.introduction = introduction;
	}

	public Long getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getIntroduction() {
		return introduction;
	}

	public void setIntroduction(String introduction) {
		this.introduction = introduction;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return JSON.toJSONString(this);
	}
}

3 創建dao

在包com.example.demo.dao創建AuthorRepository,AuthorRepository.java代碼如下:

package com.example.demo.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.example.demo.models.Author;

@Repository
public interface AuthorRepository extends JpaRepository<Author, Long> {

}

4 業務處

在包com.example.demo.service創建接口IAuthorService,IAuthorService.java代碼如下:

package com.example.demo.service;

import java.util.List;

import com.example.demo.models.Author;

public interface IAuthorService {
	/**
     * 獲取所有 Author
     */
    List<Author> findAll();

    /**
     * 新增 Author
     *
     * @param Author {@link Author}
     */
    Author insertByAuthor(Author author);

    /**
     * 更新 Author
     *
     * @param Author {@link Author}
     */
    Author update(Author author);

    /**
     * 刪除 Author
     *
     * @param id 編號
     */
    void delete(Long id);

    /**
     * 獲取 Author
     *
     * @param id 編號
     */
    Author findById(Long id);
}

5 實現業務

在包com.example.demo.service創建AuthorServiceImpl,實現業務接口IAuthorService,AuthorServiceImpl.java代碼如下:

package com.example.demo.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.dao.AuthorRepository;
import com.example.demo.models.Author;

@Service
public class AuthorServiceImpl implements IAuthorService {
	@Autowired
    private AuthorRepository authorRepository;

	@Override
	public List<Author> findAll() {
		return authorRepository.findAll();
	}

	@Override
	public Author insertByAuthor(Author author) {
		return authorRepository.save(author);
	}

	@Override
	public Author update(Author author) {
		return authorRepository.save(author);
	}

	@Override
	public void delete(Long id) {
		authorRepository.deleteById(id);
	}

	@Override
	public Author findById(Long id) {
		return authorRepository.getOne(id);
	}

}

6 jpa配置

修改application.properties文件,代碼如下:

#mysql\u914D\u7F6E
spring.datasource.url=jdbc:mysql://localhost:3306/itcaststore?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# config hibernate
#spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

7 測試

在src/test/java目錄下的包com.example.demo.service中,創建測試文件AuthorServiceTest,AuthorServiceTest.java代碼如下:

package com.example.demo.service;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.example.demo.models.Author;

@RunWith(SpringRunner.class)
@SpringBootTest
public class AuthorServiceTest {

	@Autowired
	private IAuthorService service;

	@Test
	public void findAll() {
		List<Author> list = service.findAll();
		for (Author author : list) {
			System.out.println(author.toString());
		}
		System.out.println("打印結束");
	}

	@Test
	public void insert() {
		Author a = new Author("張三", 42, "浙江工業職業技術學院");
		service.insertByAuthor(a);
	}
}

執行insert,成功後,再執行findAll,可以看到新增加的數據。
打開MySQL數據庫,可以看到數據庫中增加了一張authors表。

8 完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章