news 2026/2/24 23:06:29

springboot 整合 mybatis

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
springboot 整合 mybatis

文章目录

    • 目录
    • pom.xml
    • application.yml
    • spboot程序入口
      • @MapperScan("com.atguigu.mapper")
    • 实体类 User
    • mapper 接口
    • resources 文件夹下的 mapper.xml
    • service ( @Transactional 就能添加事务)
    • controller
    • 添加AOP

目录

pom.xml

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></parent><groupId>com.atguigu</groupId><artifactId>boot-mybatis</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.1</version></dependency><!-- 数据库相关配置启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- druid启动器的依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.20</version></dependency><!-- 驱动类--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency><!-- springboot 使用aop --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency></dependencies><!-- SpringBoot应用打包插件 1、在SpringBoot项目中添加 spring-boot-maven-plugin 插件, 是为了:支持将项目打包成可执行的可运行jar包, 2、如果不添加 spring-boot-maven-plugin 插件配置, 使用常规的 java -jar 命令来运行打包后的SpringBoot项目,是无法找到应用程序的入口点, 因此导致无法运行。 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

application.yml

# druid连接池spring:datasource:type:com.alibaba.druid.pool.DruidDataSource# 使用druid连接池druid:url:jdbc:mysql:///mybatis-exampleusername:rootpassword:rootdriver-class-name:com.mysql.cj.jdbc.Driver# mabatis的配置,这里彻底舍弃了mybatis-config.xml# 需要指定xxxMapper.xml的位置、settings的配置、别名的配置,等等mybatis:mapper-locations:classpath:/mappers/*.xml# 需要指定xxxMapper.xml的位置(在 Main.java 中通过@MapperScan("com.atguigu.mapper") 指定mapper接口所在的位置)type-aliases-package:com.atguigu.pojoconfiguration:map-underscore-to-camel-case:trueauto-mapping-behavior:fulllog-impl:org.apache.ibatis.logging.slf4j.Slf4jImpl

spboot程序入口

@MapperScan(“com.atguigu.mapper”)

使用 @MapperScan("com.atguigu.mapper") 指定 mapper接口 所在位置

packagecom.atguigu;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@MapperScan("com.atguigu.mapper")// mapper接口所在的位置@SpringBootApplicationpublicclassMain{publicstaticvoidmain(String[]args){SpringApplication.run(Main.class,args);}}

实体类 User

packagecom.atguigu.pojo;importlombok.Data;@DatapublicclassUser{privateintempId;privateStringempName;privatedoubleempSalary;}

mapper 接口

packagecom.atguigu.mapper;importcom.atguigu.pojo.User;importjava.util.List;publicinterfaceUserMapper{List<User>queryAllUser();intdelete(inti);}

resources 文件夹下的 mapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTO Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.atguigu.mapper.UserMapper"><selectid="queryAllUser"resultType="user">select * from t_emp;</select><deleteid="delete">delete from t_emp where emp_id = #{id}</delete></mapper>

service ( @Transactional 就能添加事务)

packagecom.atguigu.service;importcom.atguigu.mapper.UserMapper;importcom.atguigu.pojo.User;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Transactional;importjava.util.List;@ServicepublicclassUserService{@AutowiredprivateUserMapperuserMapper;@Transactionalpublicvoiddelete(Integerid){introws=userMapper.delete(id);System.out.println("rows= "+rows);inti=1/0;}publicList<User>findAll(){List<User>list=userMapper.queryAllUser();returnlist;}}

controller

packagecom.atguigu.controller;importcom.atguigu.mapper.UserMapper;importcom.atguigu.pojo.User;importcom.atguigu.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;@RestController@RequestMapping("user")publicclassUserController{@AutowiredprivateUserServiceuserService;@GetMapping("list")publicList<User>query(){List<User>list=userService.findAll();returnlist;}@GetMapping("delete/{id}")publicStringdeleteFn(@PathVariableIntegerid){userService.delete(id);return"success";}}

添加AOP

packagecom.atguigu.advice;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.springframework.stereotype.Component;@Component@AspectpublicclassLogAdvice{@Before("execution(* com.atguigu.service.*.*(..))")publicvoidbefore(JoinPointjoinPoint){StringclassName=joinPoint.getSignature().getDeclaringType().getSimpleName();StringmethodName=joinPoint.getSignature().getName();System.out.println("开始执行 - className = "+className+", methodName = "+methodName);}}

浏览器访问http://localhost:8080/user/list
因为添加了 AOP,
所以,就会打印开始执行 - className = UserService, methodName = findAll

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

Python代码质量提升指南:数据科学家的科学计算代码优化实践

Python代码质量提升指南&#xff1a;数据科学家的科学计算代码优化实践 【免费下载链接】spyder Official repository for Spyder - The Scientific Python Development Environment 项目地址: https://gitcode.com/gh_mirrors/sp/spyder 你是否曾遇到过这样的困境&…

作者头像 李华
网站建设 2026/2/17 12:45:44

3种强力Cursor试用重置方案:突破设备标识符限制的完整指南

3种强力Cursor试用重置方案&#xff1a;突破设备标识符限制的完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro.…

作者头像 李华
网站建设 2026/2/21 1:11:20

好写作AI:突破创作瓶颈!AI如何帮你写出让读者“上头”的文字?

你是否也经历过这样的尴尬&#xff1a;明明心里惊涛骇浪&#xff0c;写出来却像天气预报&#xff1f;精心打磨的文章发出去&#xff0c;点赞量还不如隔壁的午饭照片&#xff1f;别急&#xff0c;这不是你的表达能力有问题——只是少了点“感染力魔法”。而好写作AI&#xff0c;…

作者头像 李华
网站建设 2026/2/25 15:26:22

好写作AI:告别“嘴瓢式表达”,让每个观点都精准命中靶心

你是不是也经历过这种“表达车祸现场”&#xff1f; 心里想的是&#xff1a;“这个技术方案简直优雅如诗&#xff01;” 嘴里说出来是&#xff1a;“呃…就那个…你懂的…反正挺好。” 文档写出来是&#xff1a;“该方案具备一定优势。” 从“惊艳”到“还行”&#xff0c;你的…

作者头像 李华
网站建设 2026/2/25 8:13:02

CoInitialize在线程中怎么调用?常见失败原因解析

理解COM线程初始化对于在Windows平台上进行稳健的软件开发至关重要&#xff0c;尤其是在涉及多线程、自动化或交互操作Office等场景时。如果处理不当&#xff0c;可能导致诸如“未调用CoInitialize”的运行时错误。下面我们将具体探讨几个常见问题。 CoInitialize 在哪个线程调…

作者头像 李华