Spring Data 增删改查事务的使用(七)
@Modifying 注解使用
@Modifying 结合 @Query注解进行更新操作
咱们单单的一个查询注解是没有办法完成事务的操作的
我们还要结合一点就是@Transaction 在springdata的使用
话不多说 我们开始
开始之前我先讲下上篇文章的 漏了一个 查询总记录数的 本来想给大家写个例子 今天在这里补上
还是在 EmployeeRepository.java 该类增加新的方法
//获取总记录数
//nativeQuery =true 表示支持本地sql查询
@Query(nativeQuery = true,value = "select count(*) from employee")
public long getCount();
编写一个测试方法
@Test
public void tesquerayParams(){
List<Employee> employees = employeeRepository.querayParams("wangwu",12);
for (Employee employee: employees) {
System.out.println("id:" + employee.getId()
+ " , name:" + employee.getName()
+ " ,age:" + employee.getAge());
}
}
执行结果

进入正题 咱们讲下事务的操作
还是一样 通过例子给大家展示
还是在EmployeeRepository.java ---------->update方法
package org.springdata.repository;
import org.springdata.domain.Employee;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.RepositoryDefinition;
import org.springframework.data.repository.query.Param;
import java.util.List;
/***
*
*/
@RepositoryDefinition(domainClass = Employee.class, idClass = Integer.class)
public interface EmployeeRepository /*extends Repository<Employee,Integer>*/ {
/**
* 根据名字找员工
* desc 大家可以发现 我只声明了一个方法 并没有写任何的实现类 哦了 就这样 咱们写个实现类
* @param name
* @return
*/
public Employee findByName(String name);
// name 根据模糊查询 并且 年龄<多少岁的员工
public List<Employee> findByNameIsStartingWithAndAgeLessThan(String name, Integer gae);
// names in ('','','') 年龄小于多少
public List<Employee> findByNameInOrAgeLessThan(List<String> names,Integer age);
//获取年龄最大的信息
@Query(" select o from Employee o where o.age=(select max(age) from Employee t1)")
public Employee getEmployeeByAge();
//获取name包含 哪些 并且年龄等于多少岁
@Query("select o from Employee o where o.name like %?1% and o.age = ?2")
public List<Employee> querayParams(String name,Integer age);
//获取总记录数
//nativeQuery =true 表示支持本地sql查询
@Query(nativeQuery = true,value = "select count(*) from employee")
public long getCount();
//根据id修改年龄
@Modifying //该注解表示允许修改
@Query("update Employee o set o.age=:age where o.id = :id")
public void update(@Param("id")Integer id, @Param("age")Integer age);
}
写完之后是不是可以马上测试呢? 不是的
咱们做过javaee开发的同学都知道 我们事务都是放在service 里面控制的 所以这次也是一样 咱们新建一个service包 见一个EmployeeService类
所以咱们新建一个EmployeeService.java 进行事务控制

编写一下代码:
package org.springdata.service;
import org.springdata.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
/**
* Employee 事务的控制
*/
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
@Transactional //事务注解
public void update(Integer id,Integer age){
employeeRepository.update(id,age);
}
}
编写测试类-----------testupdate
package org.springdata.service;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springdata.repository.EmployeeRepository;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
*/
public class SpringDataTransaction {
private ApplicationContext ctx = null;
private EmployeeService employeeService = null;
@Before
public void setup(){
ctx = new ClassPathXmlApplicationContext("beans_news.xml");
employeeService = ctx.getBean(EmployeeService.class);
System.out.println("setup");
}
@After
public void tearDown(){
ctx = null;
System.out.println("tearDown");
}
@Test
public void testUpdate(){
employeeService.update(1,52);
}
}
测试结果

Spring Data 增删改查事务的使用(七)的更多相关文章
- sssp-springmvc+spring+spring-data-jpa增删改查
环境:IDE:eclipse.jdk1.7.mysql5.7.maven 项目结构图 上面目录结构你可以自己创建 搭建框架 首先加入maven依赖包以及相关插件 <dependencies> ...
- vue.js+element ui Table+spring boot增删改查
小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...
- C# Dapper 基本使用 增删改查事务等
using DapperTest.Models; using System.Collections.Generic; using System.Web.Http; using Dapper; usin ...
- C# Dapper 基本使用 增删改查事务
来源:https://blog.csdn.net/Tomato2313/article/details/78880969 using DapperTest.Models; using System.C ...
- 4、Spring+MyBatis增删改查
0.oracle数据库脚本 create table userinfo (id ), name ), password telephone ), isadmin )); --4.2 用户表序列 cre ...
- spring mongodb增删改查操作
添加数据 School @Id @GeneratedValue private long id; @Indexed(unique = true) private String name; studen ...
- PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理
相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析 PHPmysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理 介绍 PDO是一种PHP程序连接数据库的接口 ...
- 【php增删改查实例】第七节 - 部门管理模块(画一个datagrid表格)
在easyui中,datagrid组件需要用一个table标签去渲染. <table id="grid0" title="部门管理" class=&quo ...
- Python 模拟SQL对文件进行增删改查
#!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__: Dalhhin # Python 3.5.2,Pycharm 2016.3.2 # 2 ...
随机推荐
- [转]__cdecl与__stdcall
来自Programming Windows 5th Edition The WinMain function is given a type of WINAPI (as is every Window ...
- 椭圆曲线密码体制(ECC)简介
一.椭圆曲线的基本概念 简单的说椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为他们是用三次方程来表示,并且该方程与计算椭圆周长的方程相似. 对密码学比较有意义的是基于素数域GF(p)和基于二进制域(GF ...
- Android App性能測试
一.内存 1.查看单个应用App最大内存限制 Command:adb shell "getprop|grep heapgrowthlimit" C:\Users\hujiachun ...
- C语言 · 删除数组中的0元素
算法提高 6-9删除数组中的0元素 时间限制:1.0s 内存限制:512.0MB 编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动.注意,C ...
- curses库--libncurses5-dev--游标移动及屏幕的显示
curses是一个在Linux/Unix下广泛应用的图形函数库.,作用是可以绘制在DOS下的用户界面和漂亮的图形. curses的名字起源于"cursor optimization" ...
- 文件模式设置用户ID/设置组ID/sticky bit_转
S_ISUID (04000) set-user-ID (set process effective user ID on execve(2))S_ISGID (02000) set-grou ...
- 在后台运行Python脚本服务
在服务器,程序都是后台运行的,当写的python脚本时,需要: 你要是想python robot.py & 是不行的,一旦用户登出,脚本就自动退出了.用at, cron也可以实现不过我发现 ...
- CI $_GET
CI默认过滤了$_GET 需要传递get参数时一般直接 /参数一/参数二 详见手册说明:http://codeigniter.org.cn/user_guide/general/controllers ...
- 一种基于匹配回朔的 css3 选择器引擎实现
介绍 CSS 选择器是一种应用于 DOM 节点查找场景的特定微型语法, 本质上和正则表达式一样都是一种模式匹配语言,灵活使用可以方便得获取指定位置的节点集合. 目前 W3C 推荐标准为 Selecto ...
- mysql_ado的demo
winform程序 http://pan.baidu.com/s/1nvxm5br