新闻详情

新闻详情

首页 / 资讯中心 / 详情

【MyBatis系列4】MyBatis与Spring Boost整合

发布时间:2026/9/28 4:15:33来源:尧图网络
【MyBatis系列4】MyBatis与Spring Boost整合
主要通过示例讲解MyBatis和Spring Boost整合的流程。前言上个月看同事写的项目代码看到MyBatis这块发现里面没有XML文件我就问他“MyBatis和Spring集成我之前写过Demo不是应该有XML文件配置的么”然后他说“这个是Spring Boost不需要XML文件配置”我一脸蒙圈当时就感觉Java的工具真TM多一时这样一时那样搞的我连代码都看不懂。文章《【MyBatis系列2】MyBatis与Spring整合》已经讲述了与Spring的整合下面我们就看看MyBatis和Spring Boost是如何整合的。项目准备DB结构CREATE TABLE user_test ( uid tinyint(2) NOT NULL, uname varchar(20) DEFAULT NULL, usex varchar(10) DEFAULT NULL, PRIMARY KEY (uid) ) ENGINEInnoDB DEFAULT CHARSETutf8DB初始数据uidunameusex1张三女2陈恒男3楼仔男集成示例项目结构我们先看一下项目结构pom.xmlDB使用的是Mysqlpom.xml文件如下?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.example/groupId artifactIddemo/artifactId version0.0.1-SNAPSHOT/version packagingjar/packaging namedemo/name descriptionDemo project for Spring Boot/description parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.0.5.RELEASE/version relativePath/ !-- lookup parent from repository -- /parent properties project.build.sourceEncodingUTF-8/project.build.sourceEncoding project.reporting.outputEncodingUTF-8/project.reporting.outputEncoding java.version1.8/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version1.3.2/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.16.10/version /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build /project资源文件本文不使用application.properties文件而使用更加简洁的application.yml文件。将resource文件夹下原有的application.properties文件删除创建application.yml配置文件备注其实SpringBoot底层会把application.yml文件解析为application.properties本文创建了两个yml文件application.yml和application-dev.yml分别来看一下内容application.ymlspring: profiles: active: devapplication-dev.ymlserver: port: 8080 spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://xxx:3104/xm_jointly?characterEncodingutf8 username: xx password: xxx mybatis: mapper-locations: classpath:mapper/*Mapper.xml type-aliases-package: com.example.entity #showSql logging: level: com: example: mapper : debug因为现在一个项目有好多环境开发环境测试环境准生产环境生产环境每个环境的参数不同所以我们就可以把每个环境的参数配置到yml文件中这样在想用哪个环境的时候只需要在主配置文件中将用的配置文件写上就行如application.yml。在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式其中{profile}对应你的环境标识比如application-dev.yml开发环境application-test.yml测试环境application-prod.yml生产环境至于哪个具体的配置文件会被加载需要在application.yml文件中通过spring.profiles.active属性来设置其值对应{profile}值。UserMapper.xml?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.dao.UserDao !-- 根据uid查询一个用户信息 -- select idselectUserById parameterTypeInteger resultTypecom.example.entity.MyUser select * from user_test where uid #{uid} /select !-- 查询所有用户信息 -- select idselectAllUser resultTypecom.example.entity.MyUser select * from user_test /select !-- 添加一个用户#{uname}为 com.mybatis.po.MyUser 的属性值 -- insert idaddUser parameterTypecom.example.entity.MyUser insert into user_test (uid,uname,usex) values(#{uid},#{uname},#{usex}) /insert !--修改一个用户 -- update idupdateUser parameterTypecom.example.entity.MyUser update user_test set uname #{uname},usex #{usex} where uid #{uid} /update !-- 删除一个用户 -- delete iddeleteUser parameterTypeInteger delete from user_test where uid #{uid} /delete /mapper代码文件MyUser.java/** * springtest数据库中user表的持久类 */ Data public class MyUser { private Integer uid; // 主键 private String uname; private String usex; }UserDao.javaRepository Mapper public interface UserDao { /** * 接口方法对应的SQL映射文件中的id */ public MyUser selectUserById(Integer uid); public ListMyUser selectAllUser(); public int addUser(MyUser user); public int updateUser(MyUser user); public int deleteUser(Integer uid); }UserServer.javaService RequestMapping(user) public class UserServer { Autowired private UserDao userMapper; ResponseBody RequestMapping(getuser/{id}) public String test(PathVariable int id) { MyUser user userMapper.selectUserById(id); System.out.println(user.toString()); return user.toString(); } }HelloWorldMainApplication.javaSpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) { // Spring应用启动起来 SpringApplication.run(HelloWorldMainApplication.class, args); } }测试启动服务然后在网页输入http://localhost:8080/user/getuser/1结果如下输入http://localhost:8080/user/getuser/2结果如下整个示例的内容我基本没有讲解为什么要这样集成因为原理基本和Spring的集成类似如果大家对MyBatis与Spring的集成非常清楚这个看起来会非常简单具体每一步的原因请先参考文章《【MyBatis系列2】MyBatis与Spring整合》不同的部分后面我会进行说明。Spring Boost vs Spring两者的相同的地方原理和核心机制是一样的对代码的编码部分是一样的都需要DB类MyUser、接口UserDao、映射文件UserMapper.xml。两者不同的地方之前Spring和MyBatis集成时的一些配置比如sqlSessionFactory、MapperScannerConfigurer、mybatis-config.xml等之前在Spirng中都是写在applicationContext.xml配置中但是在Spring Boost中都找不到了变成了application.yml和application-dev.yml的配置。查找UserMapper.xml文件是直接写在了application-dev.yml这个还是作为MyBatis的配置项。还有一点不知道是不是我用错了我在Spring中可以写个Test测试两者的集成但是在Spring Boost中不能通过Test进行内部调用需要走URL请求的方式可能是程序启动时加载了Spring Boost框架我自己写的Demo没有启动Spring Boost框架导致这个只是我自己的理解后面有空我会再研究一下。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

微信小程序+Java后端校园服务平台毕设源码实战解析 2026/9/28 5:30:39

微信小程序+Java后端校园服务平台毕设源码实战解析

简介:面向毕业设计与课程设计的校园服务平台完整项目,基于微信小程序开发前端、Java构建后端,并使用MySQL存储数据。系统围绕校园二手交易场景设计了管理员、卖家、用户三类角色:管理员可管理用户、卖家、商品公告与订单&#xff…

阅读更多 →
YOLOv5+Tello TT无人机实战:目标检测与追踪测距全流程指南 2026/9/28 5:30:39

YOLOv5+Tello TT无人机实战:目标检测与追踪测距全流程指南

简介:基于YOLOv5与大疆教育无人机Tello TT联合开发的目标识别检测与追踪测距完整工程,定位面向毕业设计、期末课程设计及K12人工智能实践。压缩包内置可运行的Python源码、已标注数据集、训练好的模型权重与图文说明手册,代码附有注释&#x…

阅读更多 →
大模型+Playwright自动答题慕课测验:实现思路与工程伦理反思 2026/9/28 5:30:39

大模型+Playwright自动答题慕课测验:实现思路与工程伦理反思

第一次冒出给慕课测验写自动答题工具的想法,是在连刷了三天《工程伦理》章节测验之后。这门课的题目本身不算难,但架不住量多——每章少则十道,多则二十几道,单选、多选、判断、案例分析混在一起,刷完一章眼睛都快花了…

阅读更多 →
Frida批量Hook自动化实战:快速定位Android App加密参数 2026/9/28 5:30:39

Frida批量Hook自动化实战:快速定位Android App加密参数

接手一个移动端安全评估项目的时候,最磨人的环节往往不是“看不懂代码”,而是“不知道App在哪个类里算的加密参数”。我手头有个App,每个请求都得带一个sign字段,我拿着jadx反编译看了半天,代码被混淆过,越…

阅读更多 →
用大模型自动答题慕课测验:从提示词工程到部署的完整实践 2026/9/28 5:30:39

用大模型自动答题慕课测验:从提示词工程到部署的完整实践

1. 项目概述:当慕课测验遇上大模型说个挺有意思的事儿。我平时要刷不少在线慕课,其中工程伦理这门课,理论性强,案例分析又多,章节测验的题目动不动就是“请结合某工程事故,从伦理视角分析责任归属”这种大题…

阅读更多 →
Linux下Vim配置SystemVerilog语法高亮与代码导航完全指南 2026/9/28 5:30:32

Linux下Vim配置SystemVerilog语法高亮与代码导航完全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉