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. ZOJ Saddle Point 数学思维题

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5564   根据它的定义是行最小,列最大. 可以证明鞍点是唯一的. ...

  2. POJ SETI 高斯消元 + 费马小定理

    http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ...

  3. linux分配文件文件夹所属用户及组

    ls -l 可以查看当前目录文件.如:drwxr-xr-x 2 nsf users 1024 12-10 17:37 下载文件备份分别对应的是:文件属性 连接数 文件拥有者 所属群组 文件大小 文件修 ...

  4. 二叉查找树之AVL树

    定义平衡树节点: class TreeNode { /** * 树节点的值 */ private int val; /** * 树的高度 */ private int height; /** * 左子 ...

  5. python搭建ftp服务器

    1 # coding: utf-8 import os from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handler ...

  6. Opencv内存jpg图像解码和编码[转]

    CV_IMPL CvMat* cvEncodeImage( const char* ext,const CvArr* arr, const int* _params ) CV_IMPL IplImag ...

  7. Oracle Flashback Technology【闪回技术】

    -------------------------与其他数据库相比,Oracle的闪回让开发者多了一条选择的路. Flashback的目的 先看下Oracle官方文档中的解释: Oracle Flas ...

  8. Yii2中多表关联查询(with、join、joinwith)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order         (id  order_name   custome ...

  9. 【Web应用-Web作业】Web 作业无法直接运行 jar 文件

    问题描述 在经典管理门户中将直接压缩的 jar 文件打包为 zip 包,上传到 web 作业时报错. 解决方法 jar 文件的运行需要依托于 java 进程,所以在运行 jar 文件时,我们都会以格式 ...

  10. github上不了改下host

    207.97.227.239 github.com 65.74.177.129 www.github.com 207.97.227.252 nodeload.github.com 207.97.227 ...