SpringData是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得
数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。此外,它还支持
基于关系型数据库的数据服务,如Oracle RAC等。对于拥有海量数据的项目,可以用SpringData
来简化项目的开发,就如SpringFrameWork对JDBC、ORM的支持一样,SpringData会让数据的访问
变得更加方便。 Spring Data JPA: 可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据
的访问和操作。除了CRUD外,还包括如分页、排序等一些常用功能。 首先,我们需要知道的情况是Spring Data是一个开源框架,在这个框架中Spring Data JPA
只是这个框架中的一个模块,所以名字才叫Spring Data JPA。如果单独使用JPA开发,你会发现
和使用JDBC开发一样很繁琐。所以Spring Data JPA 的出现就是为了简化JPA的写法,让你只需要
编写一个接口继承一个类就能实现CRUD操作了。 步骤一:在pom文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> 步骤二:
application.properties中的配置: server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/y2156
spring.datasource.username=root
spring.datasource.password=55163
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.max-active = 20
spring.datasource.max-idle = 8
spring.datasource.min-idle=8
spring.datasource.initial-sixe=10 ######Spring jpa的配置信息
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 步骤三:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; //EmpInfo是一个可以持久化的类
@Entity
public class EmpInfo {
@Id
@GeneratedValue //主键的生成策略 mysql 自增 支持序列的数据库 序列
private Integer empno;
private String empname;
private Integer deptno; public Integer getEmpno() {
return empno;
} public void setEmpno(Integer empno) {
this.empno = empno;
} public String getEmpname() {
return empname;
} public void setEmpname(String empname) {
this.empname = empname;
} public Integer getDeptno() {
return deptno;
} public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
} 步骤四:dao层
import cn.happy.entity.EmpInfo;
import org.springframework.data.repository.CrudRepository; public interface IEmpInfoDAO extends CrudRepository<EmpInfo,Integer> {
} 步骤五:service层及service实现类
import cn.happy.entity.EmpInfo;
import java.util.List;
public interface IEmpInfoService {
public void save(EmpInfo empInfo);
public List<EmpInfo> findAll();
} import cn.happy.dao.IEmpInfoDAO;
import cn.happy.entity.EmpInfo;
import cn.happy.service.IEmpInfoService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List; @Service("empInfoService")
public class EmpInfoServiceImpl implements IEmpInfoService {
//注入一个dao的接口
@Resource(name="IEmpInfoDAO")
private IEmpInfoDAO empInfoDAO; @Override
@Transactional
public void save(EmpInfo empInfo) {
empInfoDAO.save(empInfo);
} @Override
public List<EmpInfo> findAll() {
return (List<EmpInfo>) empInfoDAO.findAll();
}
} 步骤六:controller类
import cn.happy.entity.EmpInfo;
import cn.happy.service.IEmpInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
@Controller
@RequestMapping("/second")
public class EmpInfoController {
//注入service
@Resource(name="empInfoService")
private IEmpInfoService empInfoService; //添加记录
@RequestMapping("/save")
@ResponseBody
public String save(){
EmpInfo info = new EmpInfo();
info.setEmpname("微冷的雨");
info.setDeptno(5);
empInfoService.save(info);
return "add ok!";
} //查询所有记录
@RequestMapping("/findAll")
@ResponseBody
public Object findAll(){
List<EmpInfo> list =empInfoService.findAll();
return list;
}
} CrudRepository介绍
是一个接口,继承Repository
Repository不提供任何方法,是一个标志接口
如果我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean
纳入IOC容器中,进而可以在该接口中定义满足一定规范的方法。
查询方法以find|read|get开头
涉及查询条件时,条件的属性用条件关键字连接,要注意的是条件属性以首字母大写
使用@Query注解可以自定义JPQL语句实现更灵活的查询

SpringData及SpringData JPA的理解和简单应用的更多相关文章

  1. JPA原理理解

    从前面一篇<JPA使用入门>了解了JPA的简单使用.要想继续深入的使用JPA,可能了解一点原理对于学习JPA会比较有益处. 这里从JPA的功能来简单阐述JPA的原理. 从<初步了解J ...

  2. 【repost】让你一句话理解闭包(简单易懂)

    接触javascript很久了,每次理解闭包都似是而非,最近在找Web前端的工作,所以需要把基础夯实一下. 本文是参照了joy_lee的博客 闭包 在她这篇博客的基础上以批注的形式力争把我的理解阐述出 ...

  3. Map集合遍历的四种方式理解和简单使用-----不能for循环遍历

    Map集合遍历的四种方式理解和简单使用   ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后 ...

  4. javascript javascript面向对象的理解及简单的示例

    javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...

  5. 理解Promise简单实现的背后原理

    在写javascript时我们往往离不开异步操作,过去我们往往通过回调函数多层嵌套来解决后一个异步操作依赖前一个异步操作,然后为了解决回调地域的痛点,出现了一些解决方案比如事件订阅/发布的.事件监听的 ...

  6. zTree理解和简单Demo(转)

    zTree是利用 jQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件.整个zTree的页面显示核心 代码是. <span style="font-family:V ...

  7. python 类和元类(metaclass)的理解和简单运用

    (一) python中的类 首先这里讨论的python类,都基于继承于object的新式类进行讨论. 首先在python中,所有东西都是对象.这句话非常重要要理解元类我要重新来理解一下python中的 ...

  8. 机器学习入门 一、理解机器学习+简单感知机(JAVA实现)

    首先先来讲讲闲话 如果让你现在去搞机器学习,你会去吗?不会的话是因为你对这方面不感兴趣,还是因为你觉得这东西太难了,自己肯定学不来?如果你觉的太难了,很好,相信看完这篇文章,你就会有胆量踏入机器学习这 ...

  9. html-css-js基本理解和简单总结

    目录 一.对于网页的基本理解 1.网页是一种数据展示和信息交互的载体 2.网页组成部分 3.支撑一个网页的技术模块 二.html的理解和技术笔记 1.html理解 2.html技术笔记-html标签 ...

随机推荐

  1. Java EE学习笔记(三)

    Spring AOP 1.Spring AOP简介 1).AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程).它是面向对象编程(OOP)的一种补充 ...

  2. 记录一下filter

    filter是什么,如它的字面意思,就是拦截器.它可以在request到达相关资源之前,比如servlet之前先处理requeset,也可以拦截或处理从某个资源比如servlet发出的response ...

  3. 安卓 使用LruCache 加载图片 遇到的问题

    本来 使用listview的时候 加载大图片的时候 会遇到内存溢出而导致崩溃. 但是使用LruCache的时候 原本以为可以 解决这个问题.  但是发现还是出现了内存溢出的情况.   困扰很久 另外, ...

  4. linux 简单的mysql备份和导入,以及文件的备份和导入

    一,数据库的备份与导入 1),数据库的备份 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 例:mysqldump -u dbadmin -p myblo ...

  5. I/O————字符流和流的关闭

    Reader字符输入流 Writer字符输出流 用于字符的形式读取和写入数据 FileReader与FileWriter分别是Reader与Writer的子类 public class CharScr ...

  6. arcgis jsapi接口入门系列(4):用代码在地图画点线面

    PS:用代码画点这样写是为了跟后面的用鼠标画点线面区分出来 画点 drawPointGraphic: function () { //点有多种样式:一般的点,显示文字,显示图片 //一般的点 let ...

  7. Android 面试总结~~~

    一.面试中的问题 通过这几天的面试,总结了自己在面试过程中问到的问题,部分问题已经给出了答案,还有部分问题,还未有时间整理出来. ListView出现闪图.图片错乱原因解决方案 函数式编程 (Lamb ...

  8. linux服务器上的jenkins远程触发构建windows server 2012服务器上的jenkins任务

    本文来自:https://blog.csdn.net/huashao0602/article/details/53318295  非常感谢原博主,亲测可行,这是我做CI持续集成试过的第6套方案了! 背 ...

  9. ubuntu kylin 13.10 无法安装ia32-libs解决方案

    1.安装 Synaptic 2.sudo apt-get install synaptic 3.进入synaptic ,设置->软件库 4.点击  其他软件->添加 5.输入“deb ht ...

  10. MINST手写数字识别(二)—— 卷积神经网络(CNN)

    今天我们的主角是keras,其简洁性和易用性简直出乎David 9我的预期.大家都知道keras是在TensorFlow上又包装了一层,向简洁易用的深度学习又迈出了坚实的一步. 所以,今天就来带大家写 ...