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

原文地址:https://www.cnblogs.com/achengmu/p/9378225.html