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. bzoj1538 [NWERC2017]High Score

    网上的题解都很奇怪.. 经过相当长时间的思考,有了一个有效(自认为)的解法 设某一种合法分配方案完成后三个数分别变为a,b,c,其中a>=c,b>=c 此时如果让c减1,让a或b加1(设让 ...

  2. 转 测试linux中expect的timeout参数的作用

    http://blog.csdn.net/msdnchina/article/details/50638818

  3. 下面给出了四种设计模式的作用: 外观(F

    下面给出了四种设计模式的作用: 外观(Fa?ade :为子系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用: 装饰(Decorate):当不能采用生成子类的方法进行扩充时,动 ...

  4. 一步步实现自己的ORM(一)

    最近在研究ORM,尝试着自己开发了一个简单的ORM.我个人不喜欢EF因为跟不上EF升级太快了,再说公司里还停留在c# 3.5时代,对于NHibernate配置太复杂看到就头晕,就心生自己做一个ORM的 ...

  5. IE和火狐下的iframe刷新

    前面使用了前端上传插件plupload,在谷歌浏览器中运行完全没问题,但是在IE和火狐下就出现当文档加载完成之后,该文件上传的iframe插件的上传按钮点击无效,当对上传的文件进行一次删除之后,按钮就 ...

  6. 严重:The web application [web01] appears to have started a thread named ...

    Tomcat报错 严重:The web application [web01] appears to have started a thread named [PooledThread-1] but ...

  7. 按Home键切换到后台后会触发libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient导致crash

    转自:http://www.eoeandroid.com/thread-251598-1-1.html 好像有很多朋友都碰到过这个问题,即在真机调试时,按hone键返回桌面,再回到app时,app会c ...

  8. SSave ALAsset image to disk fast on iOS

    I am using ALAsset to retrieve images like that: [[asset defaultRepresentation] fullResolutionImage] ...

  9. js 控制台输出

    var a = 'string'; var b = 123; console.log("The %s jumped over %d tall buildings", a, b); ...

  10. 【算法基础】欧几里得gcd求最大公约数

    package Basic; import java.util.Scanner; public class Gcd { public static void main(String[] args) { ...