09.事务管理、整合jpa、整合mybatis

事务管理
  • spring-boot-starter-jdbc会自动默认注入DataSourceTransactionManager
  • spring-boot-starter-data-jpa会自动默认注入JpaTransactionManager
@Service
@Transactional
public class UseDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public int updatePhoneByIDOne(String phone,Long id){
        String sql = "update ADMIN_USER set phone=? where ID = ?";
        int i = jdbcTemplate.update(sql, new Object[]{phone, id});
        int a = 1/0;
        return i;
    }
}
整合jpa
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=
spring.datasource.password=
spring.datasource.url=

spring.jackson.serialization.indent-output=true
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "ADMIN_USER")
public class AdminUser {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE,generator = "pk_gen_admin_user")
    @TableGenerator(name = "pk_gen_admin_user",table = "sys_id_gen",pkColumnName = "gen_name",pkColumnValue = "user_admin_user",valueColumnName = "gen_value",allocationSize = 1)
    private Long id;
    private String name;
    private String phone;
    private String province;
    private String city;
    private String district;
//    private Date createData;
    private String company;
    private String remark;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getDistrict() {
        return district;
    }

    public void setDistrict(String district) {
        this.district = district;
    }

//    public Date getCreateData() {
//        return createData;
//    }

//    public void setCreateData(Date createData) {
//        this.createData = createData;
//    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

import com.fly.entity.AdminUser;
import org.springframework.data.jpa.repository.JpaRepository;

public interface AdminUserDao extends JpaRepository<AdminUser,Long> {
}

import com.fly.dao.AdminUserDao;
import com.fly.entity.AdminUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AdminUserServiceImpl {
    @Autowired
    private AdminUserDao adminUserDao;
    public AdminUser findOne(Long id){
        return adminUserDao.findOne(id);
    }

    public AdminUser save(AdminUser adminUser){
        return adminUserDao.save(adminUser);
    }
}
整合mybatis
      <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>12.1.0.1-atlassian-hosted</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.1.2</version>
        </dependency>
spring:
  datasource:
    driver-class-name: oracle.jdbc.OracleDriver
    url: 
    username: 
    password: 
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      filters: stat
      maxActive: 20
      initialSize: 1
      maxWait: 60000
      minIdle: 1
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: select 'x' FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-open-prepared-statements: 20
mybatis:
  mapper-locations: classpath:mapper/AdminUserMapper.xml
#  config-location: classpath:mybatis/mybatis-config.xml

pagehelper:
  helper-dialect: oracle
  reasonable: true
  support-methods-arguments: true
  params: count=countSql
import com.fly.pojo.AdminUser;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface AdminUserMapper {
    List<AdminUser> findAll();
}

mybatis/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

mapper/AdminUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fly.Mapper.AdminUserMapper">
    <resultMap id="BaseResultMap" type="com.fly.pojo.AdminUser">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="phone" property="phone"/>
        <result column="province" property="province"/>
        <result column="city" property="city"/>
        <result column="district" property="district"/>
        <result column="company" property="company"/>
        <result column="remark" property="remark"/>
        <result column="create_date" property="createDate"/>
    </resultMap>
    <select id="findAll" resultMap="BaseResultMap">
        select id,name,phone,province,city,district,company,remark,create_date from ADMIN_USER
    </select>
</mapper>
@MapperScan("com.fly.Mapper")
public class SpringDemoApp{

测试

import com.app.SpringDemoApp;
import com.fly.Mapper.AdminUserMapper;
import com.fly.pojo.AdminUser;
import com.github.pagehelper.PageHelper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@SpringBootTest(classes = SpringDemoApp.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class AdminUserMapperTest {
    @Autowired
    private AdminUserMapper adminUserMapper;

    @Test
    public void test1(){
        PageHelper.startPage(1,10);
        List<AdminUser> adminUsers = adminUserMapper.findAll();
        for (AdminUser adminUser : adminUsers) {
            System.out.println(adminUser);
        }
    }
}
import com.fly.pojo.AdminUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface AdminUser2Mapper {
    @Select("select o.id,o.name,o.phone,o.province,o.city,o.district,o.company,o.remark,o.create_date createDate from Admin_User o")
    List<AdminUser> findAll();
    @Select("select o.id,o.name,o.phone,o.province,o.city,o.district,o.company,o.remark,o.create_date createDate from Admin_User o where o.id=#{id}")
    AdminUser findOne(@Param("id") Long id);
}

转载于:https://www.cnblogs.com/fly-book/p/11605788.html

Spring 集成事务管理详解:银行转账示例 以银行转账示例详解 Spring 事务管理 阅读详情

相关推荐

SpringBoot集成Selenium:从自动化脚本到生产级服务的完整实践

Web自动化测试与数据抓取是软件开发和运维中的常见需求,其核心原理是通过程序控制浏览器模拟用户操作,实现页面交互与内容提取。这项技术的核心价值在于提升测试效率、实现数据自动化采集,并广泛应用于回归测试、监控巡检和数据聚合等场景。在Java技术栈中,Selenium作为成熟的自动化框架,与SpringBoot的深度整合能将其从临时脚本升级为可维护、可调度的生产级服务。通过依赖注入和配置化管理,开发者可以轻松实现定时任务调度、REST API触发以及与数据库的无缝集成。本文聚焦于SpringBoot项目中Sel

一个2年工作经验的程序测试员 424

7. springboot-----Druid + mybatis + SpringDataJPA + 事务

1.

丶博弈 794

【SpringBoot】Spring boot 多数据源 no transaction is in progress EntityManager flush

1.概述 多数据源参考:《spring-boot学习》-09-spring boot+mybatis多数据源 根据这个 关于no transaction is in progress错误的解决方法 没解决。 http://www.voidcn.com/article/p-fvuppkxd-bty.html 代码中调用了 EntityManager.flush() https://blog.csdn.net/lsh15846393847/article/details/90476168 https://.

九师兄 1193

jpa与mybatis集成

JPA基于JPA 规范的基础上封装的⼀套 JPA 应⽤框架,可使开发者⽤极简的代码即可实现对数据库的访问和操作,一些简单的操作使用JPA是非常的方便,但是对于复杂的动态sql,JPA也有方法去实现 但是对于我来说我是比较倾向于mybatis,所以就在想两个是不是能一起使用。话不多说上菜 1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> &lt

sys的博客 1830

描边盛开火玫瑰

python描边盛开火玫瑰 代码如下 import turtle as t t.setup(800,800) t.hideturtle() t.speed(11) t.penup() t.goto(50,-450) t.pensize(5) t.pencolor("black") t.seth(140) t.pendown() t.speed(10) t.circle(-300,60) t.fd(100) #jiaodu80 #1ye t.seth(10) t.fd(50) t.fillcolor("gr

weixin_50973371的博客 2062

贝叶斯神经网络(Bayesian Neural Network)

最近在研究贝叶斯神经网络,一些概念一直搞不清楚,这里整理一下相关内容,方便以后查阅。

梁小憨憨的博客 3655

java mybatis 事务_mybatis事务和spring整合mybatis事务

下面是spring整合mybatis 事务管理介绍事务企业级开发中,事务管理是必不可少的,保证数据的完整性和一致性。事务的四个特性ACID:atomic:原子性 事务操作具有原子特性,要么一起完成, 要么一起不起作用consistency:一致性 一旦事务完成(提交或者回滚了),系统保证业务具有一致性状态,不会是部分完成部分失败isolation:隔离性可能有许多事务会同时处理相同的数据,因...

weixin_42353053的博客 436

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 706

JPA、Hibernate和Mybatis的关系及区别

‌MyBatis的学习成本低,‌适合需要执行复杂的SQL查询或使用多个数据库的场景。总结来说,‌JPA提供了一个标准的接口和高层次的抽象,‌适合需要快速开发和维护的项目;‌Hibernate提供了完整的ORM功能和高级特性,‌适合需要高性能和事务管理的复杂应用;目前比较成熟的 JPA 框架主要包括 Jboss 的 Hibernate EntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink、Apache 的 OpenJPA 等。轻量级且灵活的持久化框架。

papa_2019的博客 515

GEE:变异系数法在遥感影像分析中的应用及权重计算

本文介绍了在Google Earth Engine(GEE)平台上基于变异系数法的多指标加权遥感影像分析方法。该方法通过计算每个指标的平均值和标准差,进而计算变异系数来评估指标的变化程度。利用变异系数,我们可以计算每个指标的权重,并将其应用于加权和指数的计算,从而提高遥感影像分析的准确性和可靠性。方法应用于计算Risk-Screening Environmental Indicators (RSEI),并以此为例。

养乐多的博客 2273

QT C++ AI棉花智能变量灌溉工上位机(信创完整版)

北斗履带灌溉机器人/田间分区电磁阀基站 → 多层土壤温湿度/盐分EC传感器实时采集墒情 → 双目AI视觉扫描棉田长势、病苗分布 → AI融合**生育期+土壤墒情+盐分+棉株长势**计算变量灌溉定额、水肥配比、灌溉时长 → 分区电磁阀/变频水泵变量供水,病弱苗地块减量、干旱地块增量;墒情、盐分、长势多因子闭环修正灌水量;多层土壤含水率(0–10/20–40/40–80cm)、土壤EC盐分、土壤温度、空气温湿度、蒸发量、北斗地块坐标、管道水压、水肥罐液位、分区流量计、水泵电机负载、滴灌带压力反馈。

寒寒豆豆软件公司的博客 184

Spring boot 多数据源配置(Mybatics+JPA)

Spring boot 配置数据源 spring: mvc: favicon: enabled: false datasource: primary: username: root password: root jdbc-url: mysql://127.0.0.1:3306/a?useUnicode=true d...

路,漫漫走 457

YOLOv11改进 - 卷积Conv | GCNet之金箍棒块GCBlock : 重参数化捕获全局依赖 | CVPR 2025

文介绍了GCBlock在YOLOv11中的结合应用。GCBlock是GCNet的核心组件,能高效捕获特征图中的全局依赖关系,融合了非局部网络和挤压 - 激励网络的优势,降低计算成本并保障模型性能。其遵循“上下文建模 - 特征变换 - 特征融合”框架,通过全局平均池化、全连接层等操作生成注意力权重。我们将GCBlock集成进YOLOv11,替代原有的部分卷积模块,实现更高效的全局上下文建模。实验证明,YOLOv11-GCBlock在目标检测任务中表现出色,展现了GCBlock在深度学习中的广泛应用前景。

魔改工程师的博客 905

java技术--pringboot整合mybatis基于xml的来实现并开启声明式事务(09)

1.springboot开启事务,只需要一个注解@Transactional 就可以了 (1)因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务 (2)引入它们依赖的时候,事物就默认开启 (3)如果需要用其他的orm,比如beatlsql,就需要手动配置相关的事物管理器 2.环境依赖 (1)在pom文件中引入mybatis启动依赖 <depende...

qq591009234的博客 234

【推荐100个unity插件之8】实现多人在线联机游戏——Mirror插件的使用介绍(附项目源码)

基于Mirror的Unity多人游戏开发指南 本文介绍了使用Mirror插件开发Unity多人游戏的基本流程。Mirror是Unity的高级网络API,替代了已废弃的UNet系统。文章详细讲解了如何导入Mirror插件,创建NetworkManager网络管理器,处理常见错误,以及创建玩家角色和出生点。 主要内容包括: 创建场景NetworkManager并配置必要组件 为玩家添加NetworkIdentity和NetworkTransform组件 设置玩家初始生成位置和生成方式 常见错误及解决方法 通过M

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

Claude Code 100个真实案例 - 用AI搭建GIS地理信息系统(地图标注+热力图)

本案例展示如何使用 Claude Code 从零搭建一个完整的 GIS 地理信息系统。我们将使用 Python + Flask 作为后端,Leaflet.js 作为前端地图引擎,实现地图标注、热力图展示、区域绘制、坐标搜索等功能。全程通过与 Claude Code 对话完成,让你感受 AI 在地理信息领域的强大开发能力。

yueyeguzhuo的专栏 112

mybatis

MyBatis 是一个流行的 Java 持久层框架,它提供了一种简单而灵活的方式来操作数据库。MyBatis 允许开发者编写自定义 SQL 语句,并且支持 POJO(Plain Old Java Object)映射,使得数据库操作更加直观和方便。 2. 配置映射文件 3. 使用 MyBatis 不同传值方式案例 1. 使用 Primitive 类型 映射文件中的 SQL 保持不变。 映射文件中的 SQL 保持不变。 映射文件: 4. 使用 Map 映射文件: 5. 使用注解 这里使用了 注解直接

2301_77757537的博客 677

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Java八股文】05-Spring面试篇

【Java八股文】05-Spring面试篇

bblb的博客 1579

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringBoot框架集成Demo集合

序 该文档主要列举了常见的SpringBoot的基础搭建以及和其他框架的整合的基础项目搭建 自己从项目中提取了认为比较着重的要点和注意事项一并列举到了文档中,后续会加以补充更多与SpringBoot整合的相关demo 代码地址: SpringBootDemoAll. 01, 构建一个基本的SpringBoot项目 要点: @LocalServerPort 表示获取当前启动的项目端口号,一般订阅...

RemainderTime 413

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java-spring

4.2 工厂类 五、构建Maven项目 5.1 新建项目 使用IDEA打开已创建的文件夹目录 5.2 选择Maven目录 选择Maven项目 5.3 GAV坐标 GAV坐标 六、Spring环境搭建 6.1 pom.xml中引入Spring常用依赖 6.2 创建Spring配置文件 七、Spring工厂编码 八、依赖与配置文件详解 8.1 Spring依赖关系 Spring常用功能

manyi8634的博客 397

从入门到精通,一文读懂SpringBoot知识文集。

Spring Boot是一个用于构建独立的、基于Spring框架的Java应用程序的开源框架。它旨在简化Spring应用程序的开发、配置和部署过程,提供了一种约定大于配置的方式来开发Spring应用。Spring Boot的设计理念是使开发者能够快速搭建一个可独立运行的、生产级别的应用程序。它通过自动配置和约定促进了快速开发,并集成了许多常用的第三方库和工具,如等,使开发者能够更加专注于业务逻辑的实现而不必过多关注底层的配置和细节。1. 简化的配置。

m0_50308467的博客 417

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(新手教程)

不要在迷茫在SSH中了,做了2年也没绝大自己对SSH精通了,可以开发而已,3框架整合在一起就不太稳定还加上一些其他的插件第三方包,总有种不能淋淋尽致的感觉,东西是做出来了开发中觉得不流畅,也许还是自己水了!那么就Springmvc吧!在网上也收集了点资料,这是我入门时候在网上整理的,大家分享下吧!老鸟,大神级别的就可以绕道了,以免耽误时间,针对才开始学习springmvc的同学!虽说springm

feifei20081014的专栏 1248

工作中使用到的单词(软件开发)_第四版

本文汇总了2020-2025年间软件开发相关的工作笔记,主要包括三版技术词汇整理(2020-2025)、优快云文章导出PDF情况,以及2025年6月的专题整理。重点内容涉及:WebSphere中jackson包加载路径问题、Java异步线程类型(守护/非守护线程)的区分与解决方案、DB2数据库连接相关指令(db2listapplications等)、AWS托管服务优势,以及OSGi框架与Java的关系说明。特别标注了技术术语的英文发音(如initiative)和敏感信息处理注意事项(敏感度标签设置)。后续

sun0322 1344

Eclipse配置Spring开发环境全指南

Spring框架作为Java生态中最流行的企业级开发框架,其核心原理基于控制反转(IoC)和面向切面编程(AOP)两大设计模式。通过依赖注入实现组件解耦,配合AOP实现横切关注点分离,显著提升代码复用性和可维护性。在开发工具层面,Eclipse凭借其强大的插件体系成为Spring开发的理想选择,特别是通过Spring Tools 4插件可实现智能代码提示、实时配置验证等高级功能。实际开发中需重点注意JDK版本匹配、Maven依赖管理和热部署配置等工程实践要点,这些配置直接影响着开发效率和项目稳定性。本文以E

weixin_33940469的博客 257

题目:在线问答系统 功能要求: 使用SSM框架搭建项目,项目部署在linux中。配置tomcat集群(至少两 台),配置负载均衡。(附代码)项目中问题详情使用redis配置缓存。

数据库:questions.sql /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50549 Source Host : localhost:3306 Source Schema : questions Target Server Type ...

weixin_46407722的博客 474
上一篇: 08.@Scheduled定时任务、整合jdbcTemplate、mybatis区分多数据源
下一篇: 10.整合email
dffxwe51549
博客等级 码龄12年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值