【官方中文文档】Mybatis-Spring #示例代码
示例代码
提示
查看 JPetstore 6 demo 了解如何在完整的 Web 应用服务器上使用 Spring。
您可以在 MyBatis-Spring 的 代码仓库 中查看示例代码:
所有示例都能在 JUnit 5 下运行。
示例代码演示了事务服务从数据访问层获取域对象的典型设计。
FooService.java 作为服务:
@Transactional
public class FooService {private final UserMapper userMapper;public FooService(UserMapper userMapper) {this.userMapper = userMapper;}public User doSomeBusinessStuff(String userId) {return this.userMapper.getUser(userId);}}
它是一个事务 bean,所以当调用它的任何方法时,事务被启动,在方法结束且没有抛出任何未经检查的异常的时候事务将会被提交。注意,事务的行为可以通过 @Transactional 的属性进行配置。这不是必需的;你可以使用 Spring 提供的任何其他方式来划分你的事务范围。
此服务调用使用 MyBatis 构建的数据访问层.。该层只包含一个接口,UserMapper.java,这将被 MyBatis 构建的动态代理使用,在运行时通过 Spring 注入到服务之中。
public interface UserMapper {User getUser(String userId);}
注意,为了简单起见,我们使用了接口 UserMapper.java。在使用 DAO 的场景中,一个 DAO 类应该分为一个接口和一个实现类。回到这个例子里,准确来说,这个接口应该叫 UserDao.java 。
我们将看到不同的方法来发现映射器接口,将其注册到 Spring 并将其注入到服务 bean 中:
测试场景
| 样例测试 | 描述 |
|---|---|
SampleMapperTest.java | 演示基于 MapperFactoryBean 的基本配置,这将动态构建 UserMapper 的一个实现。 |
SampleScannerTest.java | 演示如何使用 MapperScannerConfigurer 来自动发现项目中所有的映射器。 |
SampleSqlSessionTest.java | 演示如何基于 Spring 管理的 SqlSession 手动编写 DAO,并在 UserDaoImpl.java 中提供你自己的实现。 |
SampleEnableTest.java | 演示如何使用 Spring 的 @Configuration 和 @MapperScann 注解来自动发现 mappers. |
SampleNamespaceTest.java | 演示如何使用自定义 MyBatis XML 命名空间. |
SampleJavaConfigTest.java | 演示如何基于 Spring 的 @Configuration 来手工创建 MyBatis 的 bean。 |
SampleJobJavaConfigTest.java | 演示如何在 Java 配置中使用 Spring Batch 中的 ItemReader 和 ItemWriter。 |
SampleJobXmlConfigTest.java | 演示如何在 XML 配置中使用 Spring Batch 中的 ItemReader 和 ItemWriter。 |
查看不同的 applicationContext.xml 文件以了解 MyBatis-Spring 在实践中是如何运用的。
相关文章:
【官方中文文档】Mybatis-Spring #示例代码
示例代码 提示 查看 JPetstore 6 demo 了解如何在完整的 Web 应用服务器上使用 Spring。 您可以在 MyBatis-Spring 的 代码仓库 中查看示例代码: 所有示例都能在 JUnit 5 下运行。 示例代码演示了事务服务从数据访问层获取域对象的典型设计。 FooService.java …...
python二级例题
请编写程序,生成随机密码。具体要求如下: (1)使用 rand…...
【java】【项目实战】[外卖九]项目优化(缓存)
目录 一、问题说明 二、环境搭建 2.1 Git管理代码 2.1.1 创建本地仓库 2.1.2 创建远程仓库 2.1.3 创建分支--》推送到远程仓库 2.2 maven坐标 2.3 配置文件application.yml 2.4 配置类RedisConfig 三、缓存短信验证码 3.1 实现思路 3.2 代码改造 3.2.1 UserContro…...
Scala集合常用函数与集合计算简单函数,高级计算函数Map和Reduce等
Scala集合常用函数与集合计算简单函数 1.Scala集合常用函数 基本属性和常用操作 1.常用函数: (1) 获取集合长度(2) 获取集合大小(3) 循环遍历(4) 迭代器(…...
You must install at least one postgresql-client-<version> package
使用主机上的映射端口来连接到 PostgreSQL 数据库。例如,使用以下命令连接到数据库: psql -h localhost -p 5432 -U postgres出现下面的问题: 分析: 如果您在运行 psql 命令时遇到错误消息 You must install at least one pos…...
爬虫源码---爬取自己想要看的小说
前言: 小说作为在自己空闲时间下的消遣工具,对我们打发空闲时间很有帮助,而我们在网站上面浏览小说时会被广告和其他一些东西影响我们的观看体验,而这时我们就可以利用爬虫将我们想要观看的小说下载下来,这样就不会担…...
【AGC】云数据库API9开发问题汇总
【问题描述】 云数据库HarmonyOS API9 SDK已经推出了一段时间了,下面为大家汇总一些在集成使用中遇到的问题和解决方案。 【问题分析】 1. 报错信息:数据库初始化失败:{“message”:“The object type list and permission …...
ASP.NET Core IOC容器
//IOC容器支持依赖注入{ServiceCollection serviceDescriptors new ServiceCollection();serviceDescriptors.AddTransient<IMicrophone, Microphone>();serviceDescriptors.AddTransient<IPower, Power>();serviceDescriptors.AddTransient<IHeadphone, Headp…...
入门力扣自学笔记277 C++ (题目编号:42)(动态规划)
42. 接雨水 题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组…...
SwiftUI实现iPad多任务分屏
1. 概述 iPadOS引入了多任务分屏功能,使用户能够同时在一个屏幕上使用多个应用程序。这为用户提供了更高效的工作环境,可以在同一时间处理多个任务。 iPad多任务分屏有两种常见的模式:1/2分屏和Slide Over(滑动覆盖)…...
maven依赖,继承
依赖的范围 compile引入的依赖 对main目录下的代码有没有效,main目录下的代码能不能用compile引入的依赖中的类等 以test引入的依赖,在main中是否可以使用 provided(已提供),有了就不要带到服务器上,打包…...
仿`gRPC`功能实现像调用本地方法一样调用其他服务器方法
文章目录 仿gRPC功能实现像调用本地方法一样调用其他服务器方法 简介单体架构微服务架构RPCgPRC gRPC交互逻辑服务端逻辑客户端逻辑示例图 原生实现仿gRPC框架编写客户端方法编写服务端方法综合演示 仿 gRPC功能实现像调用本地方法一样调用其他服务器方法 简介 在介绍gRPC简介…...
分布式环境下的数据同步
一般而言elasticsearch负责搜索(查询),而sql数据负责记录(增删改),elasticsearch中的数据来自于sql数据库,因此sql数据发生改变时,elasticsearch也必须跟着改变,这个就是…...
无涯教程-Flutter - 数据库
SQLite" class"css-1occaib">SQLite数据库是基于事实和标准SQL的嵌入式数据库引擎,它是小型且经过时间考验的数据库引擎,sqflite软件包提供了许多函数,可以有效地与SQLite数据库一起使用,它提供了操作SQLite数据…...
算法笔记:平衡二叉树
1 介绍 平衡二叉树(AVL树)是一种特殊的二叉搜索树(BST),它自动确保树保持低高度,以便实现各种基本操作(如添加、删除和查找)的高效性能。 ——>时间都维持在了O(logN)它是一棵空…...
redis 通用命令
目录 通用命令是什么 SET & GET keys EXISTS DEL EXPIRE TTL redis 的过期策略 定时器策略 基于优先级队列定时器 基于时间轮的定时器 TYPE 通过 redis 客户端和 redis 服务器交互。 所以需要使用 redis 的命令,但是 redis 的命令非常多。 通用命令…...
Pycharm配置及使用Git教程
文章目录 1. 安装PyCharm2. 安装Git3. 在PyCharm中配置Git插件4. 连接远程Gtilab仓库5. Clone项目代码6. 将本地文件提交到远程仓库6.1 git add6.2 git commit6.3 git push6.4 git pull 平时习惯在windows下开发,但是我们又需要实时将远方仓库的代码clone到本地&…...
CSS transition 过渡
1 前言 水平居中、垂直居中是前端面试百问不厌的问题。 其实现方案也是多种多样,常叫人头昏眼花。 水平方向可以认为是内联方向,垂直方向认为是块级方向。 下面介绍一些常见的方法。 2 内联元素的水平垂直居中 首先,常见内联元素有&…...
Unity中Shader的UV扭曲效果的实现
文章目录 前言一、实现的思路1、在属性面板暴露一个 扭曲贴图的属性2、在片元结构体中,新增一个float2类型的变量,用于独立存储将用于扭曲的纹理的信息3、在顶点着色器中,根据需要使用TRANSFORM_TEX对Tilling 和 Offset 插值;以及…...
Automotive 添加一个特权APP
Automotive 添加一个特权APP platform: android-13.0.0_r32 一. 添加一个自定义空调的app为例 路径:packages/apps/Car/MyHvac app内容可以自己定义,目录结构如下: 1.1 Android.bp package {default_applicable_licenses: ["Andr…...
RC4算法逆向实战:从特征识别到魔改对抗
1. RC4算法基础与逆向特征识别 RC4算法作为经典的流加密算法,在CTF竞赛和恶意软件分析中频繁出现。我第一次逆向分析RC4加密的样本时,花了整整三天才确认算法类型——因为当时的我还不熟悉它的特征指纹。现在回头看,识别标准RC4其实有明确的规…...
Java 设计模式的现代应用:构建优雅的企业级应用
Java 设计模式的现代应用:构建优雅的企业级应用我是 Alex,一个在 CSDN 写 Java 架构思考的暖男。看到新手博主写技术踩坑记录总会留言:"这个 debug 思路很 solid,下次试试加个 circuit breaker 会更优雅。"我的文章里从…...
GB/T 4996-2015 或 ISO 8611-1对实木托盘抗压施加3倍的重量测试
关于实木托盘抗压测试中施加“3倍重量”这个做法,它并非标准中的通用要求,而是一种特定场景下的安全系数验证方法。以下是针对“3倍重量”测试的详细解读和执行建议。“3倍重量”测试的目的与定位在托盘的标准检测中,常规的抗压或堆码测试通常…...
基于九轴传感器 + K-means 聚类的振动异常检测实战教程
(嵌入式 / 工业监测场景:设备振动、电机故障、结构松动、碰撞异常实时检测)一、前言(你能学到什么)这篇文章不讲虚的,直接带你做一个工业级轻量异常检测系统:用 LSM6DS3TR-C(6 轴&am…...
软件开发常见骗局有哪些?
虚假高薪招聘陷阱以“零经验高薪入职”“包就业”为噱头,要求求职者付费培训。实际培训内容质量低下,承诺的就业机会无法兑现,甚至诱导贷款支付培训费用。外包项目诈骗谎称有高额预算项目外包,要求开发者支付“保证金”或“预付款…...
如何一步一步地获取和风天气的天气数据(2026版)
如何一步一步地获取和风天气的天气数据(2026版)一、和风天气核心优势二、前期准备2.1 注册和风天气开发者账号2.2 创建项目并获取认证密钥(API 项目ID/JWT Token)2.2.1 登录控制台 → 进入项目管理 → 点击创建项目。2.2.2 填写项…...
Pandas读写Parquet文件避坑指南:pyarrow和fastparquet引擎怎么选?columns参数真能省内存吗?
Pandas读写Parquet文件避坑指南:引擎选择与内存优化实战解析 当你第一次听说Parquet格式能比CSV节省80%存储空间时,可能和我一样兴奋地立刻把项目里的数据全转成了.parquet后缀。但真正在生产环境部署时,却发现pd.read_parquet()在不同机器上…...
Python数据标准化全攻略:从原理到实践
在机器学习和数据分析领域,数据标准化是一项至关重要的预处理步骤。它能够将不同尺度的特征统一到相同的范围内,帮助模型更好地学习数据特征,提高训练效率和模型性能。本文将详细介绍数据标准化的概念、常用方法以及在Python中的实现方式。一…...
保姆级教程:用PyTorch从零复现DeepLab v3+(附MobileNet v2/Xception双Backbone代码详解)
从零构建DeepLab v3语义分割模型:MobileNet v2/Xception双主干网络实战指南 1. 语义分割与DeepLab v3架构精要 语义分割作为计算机视觉领域的核心任务之一,要求模型对图像中的每个像素进行分类,实现像素级的语义理解。不同于传统的图像分类…...
桥式电路(三)开尔文电桥在功率半导体中的实战解析
1. 从测量误差到功率革命:开尔文电桥的前世今生 1862年的实验室里,威廉汤姆森(后来的开尔文勋爵)正为小电阻测量中的诡异误差头疼不已。他发现当被测电阻低于1Ω时,连接点的接触电阻和引线电阻会彻底扭曲测量结果——这…...
