news 2026/9/30 8:17:41

Springboot数据层开发—Springboot整合JdbcTemplate和Mybatis

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Springboot数据层开发—Springboot整合JdbcTemplate和Mybatis

Springboot整合JdbcTemplate和Mybatis

  • springboot整合JdbcTemplate
  • Springboot整合Mybatis注解方式
  • Springboot整合Mybatis配置文件方式

本文介绍 SpringBoot 整合 JdbcTemplate 和 MyBatis 两种方式,均都体现了SpringBoot简化数据访问层开发的特性。

springboot整合JdbcTemplate

首先需要在数据库中创建表

SETFOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for user-- ----------------------------DROPTABLEIFEXISTS`user`;CREATETABLE`user`(`username`varchar(10)DEFAULTNULL,`userId`int(10)NOTNULL,`password`varchar(10)DEFAULTNULL,PRIMARYKEY(`userId`))ENGINE=InnoDBDEFAULTCHARSET=utf8;

Springboot中提供了JdbcTemplateAutoConfiguration 的自动配置 org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,
JdbcTemplateAutoConfiguration 源码如下:

@ControllerpublicclassTestController{@AutowiredJdbcTemplatejdbcTemplate;@ResponseBody@RequestMapping("/query")publicList<Map<String,Object>>query(){List<Map<String,Object>>maps=jdbcTemplate.queryForList("SELECT * FROM user");returnmaps;}}

由于 Springboot 中提供了 JdbcTemplateAutoConfiguration 的自动配置,直接使用 @Autowired 注解注入即可,启动 springboot,测试访问 http://localhost:8080/query


访问成功

打开监控页面

Springboot整合Mybatis注解方式

导入 mybatis 整合 springboot 模块

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency>

com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

创建JavaBean

importjava.util.Date;publicclassPerson{privateintpid;privateStringpname;privateStringaddr;privateintgender;privateDatebirth;publicPerson(){}publicPerson(intpid,Stringpname,Stringaddr,intgender,Datebirth){this.pid=pid;this.pname=pname;this.addr=addr;this.gender=gender;this.birth=birth;}publicintgetPid(){returnpid;}publicvoidsetPid(intpid){this.pid=pid;}publicStringgetPname(){returnpname;}publicvoidsetPname(Stringpname){this.pname=pname;}publicStringgetAddr(){returnaddr;}publicvoidsetAddr(Stringaddr){this.addr=addr;}publicintgetGender(){returngender;}publicvoidsetGender(intgender){this.gender=gender;}publicDategetBirth(){returnbirth;}publicvoidsetBirth(Datebirth){this.birth=birth;}@OverridepublicStringtoString(){return"Person{"+"pid="+pid+", pname='"+pname+'\''+", addr='"+addr+'\''+", gender="+gender+", birth="+birth+'}';}}

创建Mapper

importjava.util.List;@MapperpublicinterfacePersonMapper{@Select("select * from person")publicList<Person>getPersons();@Select("select * from person t where t.pid = #{id}")publicPersongetPersonById(intid);@Options(useGeneratedKeys=true,keyProperty="pid")@Insert("insert into person(pid, pname, addr,gender, birth)"+" values(#{pid}, #{pname}, #{addr},#{gender}, #{birth})")publicvoidinsert(Personperson);@Delete("delete from person where pid = #{id}")publicvoidupdate(intid);}

其中 @Options(useGeneratedKeys =true, keyProperty = “pid”),MyBatis 会获取到自增的 pid,自动赋值给传入的 person 对象的 pid 属性。

@Mapper 用于明确标记 MyBatis 对应的 Mapper 接口,核心职责是为 MyBatis 提供接口识别信号,触发 MyBatis 对接口的解析与动态代理实现类生成;在 Spring Boot 整合 MyBatis的场景下,该动态代理类会被自动注册为 Spring 容器中的 Bean,支持业务代码通过 @Autowired 直接注入使用。

单元测试

@RunWith(SpringRunner.class)@SpringBootTestpublicclassspringBootMybatisTest{@AutowiredPersonMapperpersonMapper;@TestpublicvoidtestMybatis()throwsSQLException{List<Person>persons=personMapper.getPersons();for(Personperson:persons){System.out.println(person);}}@TestpublicvoidtestMybatis1()throwsSQLException{Personp=personMapper.getPersonById(1);System.out.println(p);}}

开启 MyBatis 的下划线转驼峰命名自动映射功能

@ConfigurationpublicclassMybatisConfig{@BeanpublicConfigurationCustomizergetCustomizer(){returnnewConfigurationCustomizer(){@Overridepublicvoidcustomize(org.apache.ibatis.session.Configurationconfiguration){configuration.setMapUnderscoreToCamelCase(true);}};}}

当项目中 Mapper 接口数量较多,若在每个 Mapper 接口上逐一添加 @Mapper 注解,会增加重复工作量且不易维护。此时可采用 @MapperScan 注解的批量扫描方案。在 MyBatis 相关配置类或 Spring Boot 主启动类上添加 @MapperScan 注解,指定 Mapper 接口所在的包路径,MyBatis 会自动扫描该路径下所有接口,将其识别为 Mapper 接口,无需额外标注 @Mapper,即可完成动态代理实现类的生成与 Spring Bean 的注册。

Springboot整合Mybatis配置文件方式

classpath:mybatis 下创建 sqlMapConfig.xml 全局配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><settingname="mapUnderscoreToCamelCase"value="true"/></settings></configuration>

其中 mapUnderscoreToCamelCase 值为 true 用于开启下划线转驼峰命名自动映射功能

创建sql映射文件 PersonMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.qcby.springBootMybatis.mapper.PersonMapper"><selectid="getPersons"resultType="com.qcby.springBootMybatis.bean.Person">select * from person</select></mapper>

在 application.yaml 中配置 mybatis 相关配置信息

其中
config-location 值为全局配置文件路径
mapper-locations 值为sql映射文件
type-aliases-package 值为实体类所在包的全路径

测试验证

需要注意的是使用了 Springboot 整合 Mybatis 配置文件方式,Springboot 整合 Mybatis 注解版也同样会生效

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 6:15:24

文章查重率超出限制?五个步骤轻松降低至安全线

论文重复率超30%&#xff1f;5个降重技巧&#xff0c;一次降到合格线 嘿&#xff0c;大家好&#xff01;我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题&#xff1a;论文重复率飙到30%以上怎么办&#xff1f;别慌&#xff0c;我这就分享5个实用降重技巧&#xff0c;帮你一次…

作者头像 李华
网站建设 2026/9/29 23:40:19

12、技术文档创作与信息管理全解析

技术文档创作与信息管理全解析 1. 第三方网站引用指南 在文档创作过程中,第三方网站可能是获取信息的重要来源。选择并引用合适的第三方网站,需要完成以下任务: - 确定要引用的第三方网站 - 确定要使用的第三方 URL - 添加免责声明和任何所需的第三方措辞 - 防止未经批…

作者头像 李华
网站建设 2026/9/29 12:50:45

9大AI论文平台对比:智能生成开题框架与完整论文内容

在毕业论文季&#xff0c;高效完成开题报告和论文是很多学子的痛点。人工写作虽然灵活&#xff0c;但耗时耗力&#xff1b;而AI工具的兴起&#xff0c;能快速生成内容、优化重复率和AI痕迹。今天&#xff0c;我通过9款平台对比&#xff0c;帮你找出最适合的“学术搭档”。先从人…

作者头像 李华
网站建设 2026/9/29 17:34:38

学术写作利器:9款AI工具测评,精准生成开题报告与论文初稿

在毕业论文季&#xff0c;高效完成开题报告和论文是很多学子的痛点。人工写作虽然灵活&#xff0c;但耗时耗力&#xff1b;而AI工具的兴起&#xff0c;能快速生成内容、优化重复率和AI痕迹。今天&#xff0c;我通过9款平台对比&#xff0c;帮你找出最适合的“学术搭档”。先从人…

作者头像 李华
网站建设 2026/9/29 13:18:38

20、文档制作全流程指南

文档制作全流程指南 在当今全球化的商业环境中,文档的制作涉及多个方面,包括国际化与本地化、在线文档的考量、最终印刷生产以及后期制作的注意事项等。以下将详细介绍这些方面的内容。 国际化与本地化 如果公司有国际业务,可能需要对文档进行本地化或国际化处理。国际化…

作者头像 李华
网站建设 2026/9/30 4:46:25

GPT-20B无限制版:本地部署大模型的技术革命与实战指南

GPT-20B无限制版&#xff1a;本地部署大模型的技术革命与实战指南 【免费下载链接】OpenAi-GPT-oss-20b-abliterated-uncensored-NEO-Imatrix-gguf 项目地址: https://ai.gitcode.com/hf_mirrors/DavidAU/OpenAi-GPT-oss-20b-abliterated-uncensored-NEO-Imatrix-gguf …

作者头像 李华