SpringData——HelloWorld

2024-05-05 00:32
文章标签 helloworld springdata

本文主要是介绍SpringData——HelloWorld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、背景

最开始了解SpringData的时候,以为他不就是ORM的一种实现方式嘛,还能有什么新的东西。从hibernate到ibatis、mybatis,也许他只不过是spring想整合一个更方便的orm实现吧。

NoNoNo!!!

SpringData是希望提供一个统一的数据访问层的编程模型。

如何理解呢?

就拿SpringData中一个典型项目Spring Data MongoDB来说吧。之前我们用的hibernate、mybatis都是对应的关系型数据库,CRUD的封装也只是在这个前提之下进行的。

而对于非关系型数据库来说,比如MongoDB,它也有相应的CRUD的操作,但在项目中,我们还需要另外封装一套。这样做确实挺麻烦的,如果能够统一解决就最好了。Sprint Data MongoDB就是从这样的角度出发的,他不再区分关系型非关系型数据库,而是把数据访问这一部分封装成一个模式。

2、实例

1)、引入jar包

<!-- spring data --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-releasetrain</artifactId><version>Hopper-SR5</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.10.1.RELEASE</version></dependency>

2)、根据实体生成表

@Entity
public class Employee {@Id@GeneratedValueprivate  Long id;private String firstName, lastName, description;private Employee() {}public Employee(String firstName, String lastName, String description) {this.firstName = firstName;this.lastName = lastName;this.description = description;}//getter和setter方法略
}

添加配置信息:
spring.jpa.show-sql= true
spring.jpa.hibernate.ddl-auto=update

3)、新建dao的接口

public interface EmployeeRepository extends CrudRepository<Employee,Long>{Employee findByFirstName(String firstName);}

EmployeeRepository 继承自CrudRepository,CrudRepository使用泛型的方式提供了基本的数据操作方法。

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {<S extends T> S save(S entity);boolean exists(ID id);Iterable<T> findAll();void delete(ID id);……
}

4)、Service接口

EmployeeService

public interface EmployeeService  {Employee findByFirstName(String firstName);Employee saveEmployee(Employee employee);   
}

EmployeeServiceImpl

@Service
public class EmployeeServiceImpl implements EmployeeService {//注入dao@Autowiredprivate EmployeeRepository employeeRepository;@Overridepublic Employee findByFirstName(String firstName) {return employeeRepository.findByFirstName(firstName);   }@Overridepublic Employee saveEmployee(Employee employee) {return employeeRepository.save(employee);    }
}

5)、测试
在Controller中编写方法:

//插入数据@RequestMapping("/add")public Employee addByData(){return employeeService.saveEmployee(new Employee("Sherry","yang","员工"));}//根据firstName查询@RequestMapping("/queryByfirstName")public List<Employee> query(){return employeeService.findByFirstName("Sherry");}

3、关键字

通过上面的小demo,可以看出,使用springData来实现简单的CRUD,比通用mapper还要方便呢,尤其在复杂查询上更为明显。这都要归功于SpringData的一大创新,查询关键字。

以上面的findByFirstName为例,我们需要遵循一定的约定,这样才能更好的使用他。

下面列举了一小部分关键字:

KeywordSpring DataJPQL snippet
AndfindByLastnameAndFirstnamewhere x.lastname = ?1 and x.firstname = ?2
OrfindByLastnameOrFirstnamewhere x.lastname = ?1 or x.firstname = ?2
LessThanfindByAgeLessThanwhere x.age < ?1
OrderByfindByAgeOrderByLastnameDescwhere x.age = ?1 order by x.lastname desc
Is,EqualsfindByFirstnameIs,findByFirstnameEqualswhere x.firstname = ?1

至于SpringData对于关系型和非关系型数据库的数据访问封装,我们下篇再继续聊。

这篇关于SpringData——HelloWorld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960431

相关文章

Python简单入门教程helloworld

Python 学习资源 推荐书籍: Python核心编程(第二版) (强烈推荐,建议有一定基础的看,或者看完简明Python教程再看) Python 基础教程 第二版 (入门,没有核心编程好,但也不错) 编写高质量代码:改善Python程序的91个建议 (进阶,有一定基础再看) 书籍下载: Python 教程(部分内容来源于网络, 历时一年多总结整理的,给刚刚入门的

HelloWorld 模块

helloworld.c 代码 #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "Hello world\n");return 0;}static void hello_exit(v

ROS程序设计系列 - 5.实例helloworld

ROS程序设计系列 - 5.实例helloworld 1. 源由2. 步骤Step 1:安装ROS系统Step 2:创建框架工程Step 3:检查工程结构Step 4:创建CPP文件Step 5:修改配置文件Step 6:编译工程 3. 测试Step 1: 启动ROS CoreStep 2: 启动Hello程序 4. 总结5. 参考资料6. 补充 1. 源由 在做《Ardupil

使用命令行窗口新建一个Java文件,输出HelloWorld

进入桌面 cd desktop 在桌面新建文件夹 mkdir zwt 进入文件夹,新建.Java文件 cd zwtecho. > helloWorld.java 使用记事本打开文件编写代码 notepad HelloWorld.java 此时电脑就会自动打开文件,直接编写代码 public class HelloWorld(){public static void mi

Qwen-7B-Chat大模型安装训练推理-helloworld

初始大模型之helloworld编写 开发环境:modelscope GPU版本上测试的,GPU免费36小时 ps:可以不用conda直接用环境自带的python环境使用 魔搭社区 安装conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 1.2 bash Minicond

Shiro HelloWorld (二)从数据库中获得数据

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、创建users表,插入一条记录</span> <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb

Shiro HelloWorld

Maven工程结构图如下: pom.xml中依赖如下: <span style="white-space:pre"> </span><dependencies><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.4</version></de

Canvas(1)之HelloWorld

/*1.要使用canvas必须先设置其width和height属性2.接着获取绘制上下文,并指定能力,为2D还是3D3.绘制方式有填充和描边两种方式,即fillStyle 填充属性 fillRect()strokeStyle 描边属性 strokeRect()*/var drawing = document.getElementById('drawing');if(drawing

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - HelloWorld

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - HelloWorld flyfish Ascend C算子编程是SPMD(Single-Program Multiple-Data)编程 假设,从输入数据到输出数据需要经过3个阶段任务的处理(T1、T2、T3)。如下图所示,SPMD会启动一组进程,并行处理待处理的数据。对待处理数据切分,把切分后数据分片分发给不同进程处理

php环境搭建,小白helloworld初试

学php的起因是因为阿里云的云服务器好贵啊。用来搞测试网站有点方。虚拟主机倒是便宜,不过只有html和php环境。 一、本人php小白,有啥不对的,请指正。 1.各种软件环境:前人栽树,所以出现了XAMPP这种好东西,把需要的软件都搞到一起,然后直接下载解压就ok.这个貌似就是下载地址 下载后请安装在C,D,E,F这种根目录下,例如E:/xampp. 我也不知道为啥会这样,本人亲试,重装两次,