文章目录
- 目录
- 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.Slf4jImplspboot程序入口
@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