spring boot: @Entity @Repository一個簡單的數據讀存儲讀取


spring boot: @Entity @Repository一個簡單的數據讀存儲讀取

 

 創建了一個實體類。
 如何持久化呢?
1、使用@Entity進行實體類的持久化操作,當JPA檢測到我們的實體類當中有
 @Entity 注解的時候,會在數據庫中生成對應的表結構信息。

 

2.哪些處理需要事務呢

save,update ,delete 方法需要綁定事務.

 使用@Transactional進行事務的綁定.

 

3.dao文件

使用@Repository注解,標注這是一個持久化操作對象.

 

以Cat為例;

CREATE TABLE `cat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cat_age` varchar(255) DEFAULT NULL,
  `cat_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

  

1.新建Cat.java

package com.muyang.boot22.bena;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * 創建了一個實體類。
 * 
 * 如何持久化呢?
 * 
 * 1、使用@Entity進行實體類的持久化操作,當JPA檢測到我們的實體類當中有
 * 
 * @Entity 注解的時候,會在數據庫中生成對應的表結構信息。
 * 
 * 
 * 如何指定主鍵以及主鍵的生成策略?
 * 
 * 2、使用@Id指定主鍵.
 * 
 * 
 * 
 * @author Angel -- 守護天使
 * @version v.0.1
 * @date 2016年12月17日
 */
@Entity
public class Cat {

	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	
	private String catAge;
	
	private String catName;

	public int getId() {
		return id;
	}

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

	public String getCatAge() {
		return catAge;
	}

	public void setCatAge(String catAge) {
		this.catAge = catAge;
	}

	public String getCatName() {
		return catName;
	}

	public void setCatName(String catName) {
		this.catName = catName;
	}
	
	
	
}

  

CatDao.java

JdbcTemplate的使用

package com.muyang.boot22.dao;

import javax.annotation.Resource;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import com.muyang.boot22.bena.Cat;

/**
 * 使用@Repository注解,標注這是一個持久化操作對象.
 * @author Angel -- 守護天使
 * @version v.0.1
 * @date 2016年12月18日
 */
@Repository
public class CatDao {

	@Resource
	JdbcTemplate jdbcTemplate;
	
	public Cat selectCatName(String catName)
	{
		
		/**
		 * 1、定義一個Sql語句;
		 * 2、定義一個RowMapper.
		 * 3、執行查詢方法.
		 */
		String sql = "select * from cat where cat_name=:catName";
		RowMapper<Cat> rowMapper = new BeanPropertyRowMapper<>(Cat.class);
		Cat cat = jdbcTemplate.queryForObject(sql, new Object[] {catName}, rowMapper);
		return cat;
		
	}
}

  

 

CatRepository.java

繼承CrudRepository.java

package com.muyang.boot22.repository;

import org.springframework.data.repository.CrudRepository;

import com.muyang.boot22.bena.Cat;

public interface CatRepository extends CrudRepository<Cat, Integer> {

}

  

 

Cat2Repository.java

繼承PagingAndSortingRepository

使用@Query查詢注解

package com.muyang.boot22.repository;


import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;

import com.muyang.boot22.bena.Cat;

public interface Cat2Repository extends PagingAndSortingRepository<Cat, Integer> {

	/**
	 * 1/ 查詢方法 以 get | find | read 開頭.
	 * 2/ 涉及查詢條件時,條件的屬性用條件關鍵字連接,要注意的是條件屬性以首字母大寫。
	 */
	public Cat findByCatName(String catName);
	
	
	/**
	 * 如何編寫JPQL語句, 
	 * Hibernate  -- HQL語句.
	 * JPQL 語句 和HQL語句是類似的.
	 */
	@Query("from Cat where catName=:cn")
	public Cat findMyCatName(@Param("cn") String catName);
}

  

 

CatService.java

調用CatDao.java, CatRepository.java, Cat2Repository.java

package com.muyang.boot22.service;

import java.util.List;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.springframework.stereotype.Service;

import com.muyang.boot22.bena.Cat;
import com.muyang.boot22.dao.CatDao;
import com.muyang.boot22.repository.Cat2Repository;
import com.muyang.boot22.repository.CatRepository;

@Service
public class CatService {

	@Resource
	CatRepository catRepository;
	
	@Resource
	Cat2Repository cat2Repository;
	
	@Resource
	CatDao catDao;
	
	
	/**
	 * save,update ,delete 方法需要綁定事務.
	 * 
	 * 使用@Transactional進行事務的綁定.
	 * 
	 * @param cat
	 */
	
	@Transactional
	public void save(Cat cat)
	{
		catRepository.save(cat);
	}
	
	@Transactional
	public void delete(int id)
	{
		catRepository.delete(id);
	}
	
	public Cat findOne(int id) {
		return catRepository.findOne(id);
	}
	
	public Iterable<Cat> findAll()
	{
		return catRepository.findAll();
	}
	
	public Cat selectCatName(String catName)
	{
		return catDao.selectCatName(catName);
	}
	
	
	public Cat selectMyCatName(String catName) {
		return cat2Repository.findMyCatName(catName);
	}
	
	public Cat findByCatName(String catName)
	{
		return cat2Repository.findByCatName(catName);
	}
	
}

  

CatController.java

調用CatService.java

package com.muyang.boot22.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.muyang.boot22.bena.Cat;
import com.muyang.boot22.service.CatService;



@RestController
@RequestMapping(value="/cat")
public class CatController {

	@Resource
	CatService catService;
	
	
	
	@RequestMapping(value="/index")
	public Iterable<Cat> index()
	{
		
		return catService.findAll();
	}
	
	
	@RequestMapping(value="/id/{id}")
	public Cat findById(@PathVariable(value="id") int id)
	{
		return catService.findOne(id);
		
	}
	
	@RequestMapping(value="/catName/{catName}")
	public Cat findMyCatName(@PathVariable(value="catName") String catName)
	{
		return catService.selectMyCatName(catName);
		
	}
	
	@RequestMapping(value="/findName/{catName}")
	public Cat findByCatName(@PathVariable(value="catName") String catName)
	{
		return catService.findByCatName(catName);
	}
	
}

  

 

訪問地址:

http://localhost:8081/springboot/cat/index

http://localhost:8081/springboot/cat/id/1

http://localhost:8081/springboot/cat/catName/%E5%BC%A0%E4%B8%89

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM