SpringData及SpringData JPA的理解和简单应用
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的理解和简单应用的更多相关文章
- JPA原理理解
从前面一篇<JPA使用入门>了解了JPA的简单使用.要想继续深入的使用JPA,可能了解一点原理对于学习JPA会比较有益处. 这里从JPA的功能来简单阐述JPA的原理. 从<初步了解J ...
- 【repost】让你一句话理解闭包(简单易懂)
接触javascript很久了,每次理解闭包都似是而非,最近在找Web前端的工作,所以需要把基础夯实一下. 本文是参照了joy_lee的博客 闭包 在她这篇博客的基础上以批注的形式力争把我的理解阐述出 ...
- Map集合遍历的四种方式理解和简单使用-----不能for循环遍历
Map集合遍历的四种方式理解和简单使用 ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后 ...
- javascript javascript面向对象的理解及简单的示例
javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...
- 理解Promise简单实现的背后原理
在写javascript时我们往往离不开异步操作,过去我们往往通过回调函数多层嵌套来解决后一个异步操作依赖前一个异步操作,然后为了解决回调地域的痛点,出现了一些解决方案比如事件订阅/发布的.事件监听的 ...
- zTree理解和简单Demo(转)
zTree是利用 jQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件.整个zTree的页面显示核心 代码是. <span style="font-family:V ...
- python 类和元类(metaclass)的理解和简单运用
(一) python中的类 首先这里讨论的python类,都基于继承于object的新式类进行讨论. 首先在python中,所有东西都是对象.这句话非常重要要理解元类我要重新来理解一下python中的 ...
- 机器学习入门 一、理解机器学习+简单感知机(JAVA实现)
首先先来讲讲闲话 如果让你现在去搞机器学习,你会去吗?不会的话是因为你对这方面不感兴趣,还是因为你觉得这东西太难了,自己肯定学不来?如果你觉的太难了,很好,相信看完这篇文章,你就会有胆量踏入机器学习这 ...
- html-css-js基本理解和简单总结
目录 一.对于网页的基本理解 1.网页是一种数据展示和信息交互的载体 2.网页组成部分 3.支撑一个网页的技术模块 二.html的理解和技术笔记 1.html理解 2.html技术笔记-html标签 ...
随机推荐
- Codeforces Round #396 (Div. 2) B
Mahmoud has n line segments, the i-th of them has length ai. Ehab challenged him to use exactly 3 li ...
- dubbo-spring
一.需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址:创建两个服务模块进行测试 测试预期结果:订单服务web模块在A服务器,用户服务模块在B服务器,A可以远程调用B的功能. 二.工程 ...
- AJPFX关于Collection接口的总结
###15Collection-List-ArrayList/LinkedList/* * Collection接口中的方法* A:添加功能* boolean add ...
- [Luogu1343]地震逃生 最大流
题目链接:https://www.luogu.org/problem/show?pid=1343 dinic跑最大流. #include<cstdio> #include<cstri ...
- 初探ant design pro
1.增加路由子页面&配置菜单 因为ant design pro采取的是umi路由配置,所以只要在对应的文件夹下新建相关的文件夹以及文件,它会自动解析.按照如下的步骤做即可 PS.如果想要给菜单 ...
- 88E1111
千兆网phy芯片 支持GMII,RGMII,MII等接口 具备4个GMII时钟模式 支持自适应功能 超低功耗模式 功率降低模式 MDC/MDIO/TWSI接口 支持10Mb/s,100Mb/s,100 ...
- SQLServer同一实例下事务操作
参考代码: 引用Dapper public bool OrderAdd2(User user, Order order) { string dbString = ConfigurationManage ...
- UVA - 1279 Asteroid Rangers (动点的最小生成树)
题意,有n个匀速动点,求最小生成树的改变次数. 一句话总结:动态问题的一般做法是先求出一个静态的解,然后求出解发生改变的事件,事件按照时间排序,依次处理. 先求出最开始的最小生成树(MST),当MST ...
- WPF知识点全攻略10- 路由事件
路由事件是WPF不得不提,不得不会系列又一 先来看一下他的定义: 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 C ...
- java反序列化字节转字符串工具
https://github.com/NickstaDB/SerializationDumper SerializationDumper-v1.1.jar 用法 : java -jar Seriali ...