zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Android Fragment(一)
    Android github上的好的开源项目汇总
    Android ScrollView 嵌套ListView的替代方案
    Android cannot be cast to android.app.Fragment
    js css加时间戳
    WPF无边框实现拖动效果
    分析器错误消息: 未能加载类型
    微信红包功能(含示例demo)
    ABP缓存示例
    微信白名单配置与检验
  • 原文地址:https://www.cnblogs.com/achengmu/p/9378225.html
Copyright © 2011-2022 走看看