实体类

package com.kfit.demo1.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id; /**
* 创建了一个实体类。
*
* 如何持久化呢?
*
* 1、使用@Entity进行实体类的持久化操作,当JPA检测到我们的实体类当中有
*
* @Entity 注解的时候,会在数据库中生成对应的表结构信息。
*
*
* 如何指定主键以及主键的生成策略?
*
* 2、使用@Id指定主键.
*
*/
@Entity
public class Cat { /**
* 使用@Id指定主键.
*
* 使用代码@GeneratedValue(strategy=GenerationType.AUTO)
* 指定主键的生成策略,mysql默认的是自增长。
*
*/
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int id;//主键. private String catName;//姓名. cat_name private int catAge;//年龄. cat_age; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getCatName() {
return catName;
} public void setCatName(String catName) {
this.catName = catName;
} public int getCatAge() {
return catAge;
} public void setCatAge(int catAge) {
this.catAge = catAge;
} }

DAO类

package com.kfit.demo1.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.kfit.demo1.bean.Cat; /**
* 使用@Repository注解,标注这是一个持久化操作对象.
*/
@Repository
public class CatDao { @Resource
private JdbcTemplate jdbcTemplate; public Cat selectByCatName(String catName){ /**
* 1、定义一个Sql语句;
* 2、定义一个RowMapper.
* 3、执行查询方法.
*/
String sql = "select *from cat where cat_name=?";
RowMapper<Cat> rowMapper = new BeanPropertyRowMapper<>(Cat.class);
Cat cat = jdbcTemplate.queryForObject(sql, new Object[]{catName}, rowMapper); return cat;
} }

repository类

package com.kfit.demo1.repository;

import org.springframework.data.repository.CrudRepository;

import com.kfit.demo1.bean.Cat;

/**
* Repository -- 是接口 ,不是class.
*/
public interface CatRepository extends CrudRepository<Cat, Integer>{ }
package com.kfit.demo1.repository;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param; import com.kfit.demo1.bean.Cat; public interface Cat2Repository extends PagingAndSortingRepository<Cat, Integer>{ /**
* 1/ 查询方法 以 get | find | read 开头.
* 2/ 涉及查询条件时,条件的属性用条件关键字连接,要注意的是条件属性以首字母大写。
*/ //根据catName进行查询 : 根据catName进行查询.
public Cat findByCatName(String catName); /**
* 如何编写JPQL语句,
* Hibernate -- HQL语句.
* JPQL 语句 和HQL语句是类似的.
*/
@Query("from Cat where catName=:cn")
public Cat findMyCatName(@Param("cn")String catName);
}

service类

package com.kfit.demo1.service;

import javax.annotation.Resource;
import javax.transaction.Transactional; import org.springframework.stereotype.Service; import com.kfit.demo1.bean.Cat; import com.kfit.demo1.repository.CatRepository;
import com.kfit.demo1.dao.CatDao;
import com.kfit.demo1.repository.Cat2Repository; @Service
public class CatService { @Resource
private CatRepository catRepository; @Resource
private Cat2Repository cat2Repository; @Resource
private 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 Iterable<Cat> getAll(){
return catRepository.findAll();
} public Cat findByCatName(String catName){
return cat2Repository.findByCatName(catName);
} public Cat findByCatName2(String catName){
return cat2Repository.findMyCatName(catName);
} public Cat selectByCatName(String catName){
return catDao.selectByCatName(catName);
}
}

controller类

package com.kfit.demo1.controller;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.kfit.demo1.bean.Cat;
import com.kfit.demo1.service.CatService; @RestController
@RequestMapping("/cat")
public class CatController { @Resource
private CatService catService; @RequestMapping("/save")
public String save(){
Cat cat = new Cat();
cat.setCatName("jack");
cat.setCatAge(3);
catService.save(cat);
return "save ok.";
} @RequestMapping("/delete")
public String delete(){
catService.delete(1);
return "delete ok";
} @RequestMapping("/getAll")
public Iterable<Cat> getAll(){
return catService.getAll();
} @RequestMapping("/findByCatName")
public Cat findByCatName(String catName){ return catService.findByCatName(catName);
} @RequestMapping("/findByCatName2")
public Cat findByCatName2(String catName){
System.out.println("CatController.findByCatName2()");
return catService.findByCatName2(catName); } @RequestMapping("/selectByCatName")
public Cat selectByCatName(String catName){
return catService.selectByCatName(catName);
}
}

最新文章

  1. hibernate.cfg.xml常见配置
  2. [转]bash快捷键
  3. Protocol 编码的三种常用方式
  4. Java对象的多态性(转型)
  5. Material Design UI Widgets
  6. flume ng之TailSource
  7. 第一个React程序HelloWorld
  8. Sass和Compass设计师指南
  9. 一句话改变TGraphicControl控件的left坐标的前世今生
  10. solr ,hadoop ,lucene,nutch 的关系和区别
  11. IOS开发,如何用最新的Itunes给手机装ipa文件
  12. linux之SQL语句简明教程---CONCATENATE
  13. 计算机安装了IE8一半退出重启时,桌面只显示背景
  14. 《一起》Alpha版软件使用说明
  15. css y轴溢出滚动条,x轴溢出显示
  16. 异常值处理outlier
  17. 21.命名空间别名限定符::和global全局名称空间限定符
  18. 百度APP爬虫
  19. ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用
  20. noip第13课资料

热门文章

  1. zabbix-3.4.6安装
  2. C++ 对象构造顺序、构析函数、临时对象。
  3. Python爬虫 Selenium与PhantomJS
  4. Spring Cloud netflix 概览和架构设计
  5. 帝国 cms 修改登录次数的两种方法
  6. document.body.scrollTop无效的解决方法
  7. colspan和rowspan
  8. countUp.js-数字滚动效果(简单基础使用)
  9. 多线程编程-- part 7 CountDownLatch
  10. Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数 (转)