Spring与Mybatis整合&&aop整合pageHelper分页插件

前言

Spring与MyBatis整合的意义在于提供了一种结合优势的方式,以便更好地开发和管理持久层(数据库访问)代码

这里也是总结了几点主要意义

  1. 简化配置:Spring与MyBatis整合后,可以通过Spring的配置文件来管理和配置MyBatis的相关配置,例如数据源、事务管理等,而不需要额外的独立配置文件。这样可以减少配置的复杂性,提高开发效率。

  2. 提供事务管理:Spring框架本身提供了强大的事务管理功能,通过与MyBatis整合,可以将MyBatis的数据库操作纳入到Spring的事务管理中,实现数据库操作的事务控制,保证数据的一致性和完整性。

  3. 实现依赖注入:Spring框架的核心特性之一是依赖注入(DI),它可以帮助我们更好地管理对象之间的依赖关系。通过与MyBatis整合,可以将MyBatis的Mapper对象注入到Spring管理的Bean中,使得在业务逻辑中可以方便地使用MyBatis的数据访问功能,而不需要手动创建Mapper对象。

  4. 提供AOP支持:Spring框架提供了面向切面编程(AOP)的支持,可以方便地进行日志记录、事务管理、异常处理等横切逻辑的封装。通过与MyBatis整合,可以将这些横切逻辑应用到MyBatis的SQL执行过程中,提供更强大的日志记录、性能监控等功能。

  5. 提供更好的扩展性:通过整合Spring和MyBatis,可以更好地支持应用程序的扩展和维护。例如,可以利用Spring的Bean的生命周期管理,实现对Mapper对象的统一管理和释放资源;还可以利用Spring的AOP功能,对MyBatis进行封装,以应对未来需求变化和功能扩展。

总而言之,Spring与MyBatis整合的意义在于将两个优秀的框架结合起来,充分发挥各自的优势,提供更好的开发体验和可维护性,减少重复代码,提高开发效率,使得持久层开发更加简单、灵活和可靠。

一.Spring与Mybatis的整合配置

1.新建Maven工程

这里就不过多介绍了,翻看主页有详细教程

Idea的Maven部署及常用设置_ChatYU.的博客-CSDN博客

 2.添加相关依赖

将properties和dependences中的代码替换成下面的代码


    UTF-8
    1.8
    1.8
    3.7.0

    
    
    5.0.2.RELEASE
    
    3.4.5
    
    5.1.44
    
    5.1.2
    
    1.3.1
    
    2.1.1
    2.4.3
    
    2.9.1
    
    4.12
    4.0.0
    1.18.2
  


  
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-orm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    

    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
    
      com.github.pagehelper
      pagehelper
      ${pagehelper.version}
    
    
    
      org.mybatis
      mybatis-spring
      ${mybatis.spring.version}
    

    
    
      org.apache.commons
      commons-dbcp2
      ${commons.dbcp2.version}
    
    
      org.apache.commons
      commons-pool2
      ${commons.pool2.version}
    

    
    
    
      org.apache.logging.log4j
      log4j-core
      ${log4j2.version}
    
    
      org.apache.logging.log4j
      log4j-api
      ${log4j2.version}
    
    
    
      org.apache.logging.log4j
      log4j-web
      ${log4j2.version}
    

    
    
      junit
      junit
      ${junit.version}
      test
    
    
      javax.servlet
      javax.servlet-api
      ${servlet.version}
      provided
    
    
      org.projectlombok
      lombok
      ${lombok.version}
      provided
    

  

在指定位置将plugin插件代码进行替换

注:如果并不希望使用pluginManagement进行管理插件,建议删除


    org.apache.maven.plugins
    maven-compiler-plugin
    ${maven.compiler.plugin.version}
    
        ${maven.compiler.source}
        ${maven.compiler.target}
        ${project.build.sourceEncoding}
    


    org.mybatis.generator
    mybatis-generator-maven-plugin
    1.3.2
    
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
    
    
        true
    

3. 配置文件

3.1.在resource包中配置添加以下文件

没有resource包就新建一个

Spring与Mybatis整合&&aop整合pageHelper分页插件_第1张图片

 

 文件资源已整合好放在文章顶部,解压后将其导入即可

 3.2 导入之后,开始对spring-mybatis进行配置

将spring-mybatis的文件内容全部进行替换



    
    
    
    
    

    

    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
    
        
        
        
        
        
        
        
        
            
                
                    
                        
                            helperDialect=mysql
                        
                    
                
            
        
    

    
    
    
        
        
        
        
    

    
        
    
    
    

替换后,将里面的java包中路径替换成自己的路径

 

注:只需要修改javaxl即可,后面可自行添加自己的路径  

当我们修改好后,打开右侧导航栏中的Maven,双击标注的红框,如果没有这个选项则说明没有安装这个插件,在插件库中搜索mybatis-generator进行安装,建议观看主页

Mybatis的环境搭建及常用插件安装icon-default.png?t=N6B9https://blog.csdn.net/weixin_73320743/article/details/132393743?spm=1001.2014.3001.5502其中有常用的插件安装详细教程

Spring与Mybatis整合&&aop整合pageHelper分页插件_第2张图片 生成完成后不要再次点击,防止覆盖

 Spring与Mybatis整合&&aop整合pageHelper分页插件_第3张图片

 当我们需要在Java文件中进行测试时需要将pom.xml中的junit中的scope进行注释

Spring与Mybatis整合&&aop整合pageHelper分页插件_第4张图片

4.通过注解将bookmapper给spring进行管理

4.1 @Repository

Spring与Mybatis整合&&aop整合pageHelper分页插件_第5张图片

当我们将Spring与Mybatis进行整合后加入注解后就不需要再配置JavaBean了,我们在前面的spring-mybatis整合时指定了扫描范围

 4.2 Autowired

它可以自动将匹配的依赖对象注入到相应的变量、方法或构造函数中,为我们提高get、set方法

4.3 @Data 

自动为模型实体类提供get、set、toString方法

4.4@AllArgsConstructor@NoArgsConstructor

自动添加有参无参构造器

4.5@ContextConfiguration(locations={"classpath:spring-context.xml"}

自动加载花括号中的spring上下文,搭配@RunWith(SpringJUnit4ClassRunner.class)使用

二.aop整合pageHelper分页插件

1.创建Aop切面类及包

package com.YU.aspect;

import com.YU.utils.PageBean;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author YU
 * @create 2023-08-25 17:17
 */
@Aspect //代表当前类为切面类
@Component //代表当前类交给Spring进行管理
public class PagerAspect {
    @Around("execution(* *..*Biz.*Pager(..))")
    public Object invoke(ProceedingJoinPoint args) throws Throwable {
        PageBean pageBean = null;
        //获取目标方法的所有参数
        Object[] ars = args.getArgs();
        for (Object param : ars) {
            if(param instanceof PageBean){
                pageBean = (PageBean)param;
                break;
            }
        }

        if(pageBean != null && pageBean.isPagination())
            PageHelper.startPage(pageBean.getPage(),pageBean.getRows());

        Object list = args.proceed();

        if(null != pageBean && pageBean.isPagination()){
            PageInfo pageInfo = new PageInfo((List) list);
            pageBean.setTotal(pageInfo.getTotal()+"");
        }
        return list;
    }

}

2.解析@Around环绕通知中的execution* *..*Service.*Pager(..)

* :返回任意类型

*.. : 任意包,任意层级

*Service :以Service结尾的类/接口

*Page:以Page结尾的方法

.. :任意参数

符合上述条件即为目标类或目标方法

3.测试方法

@Test
    public void listPager() {
        Book book = new Book();
        PageBean pageBean = new PageBean();
        pageBean.setPage(2);
        pageBean.setRows(30);
        book.setBname("圣墟");
        this.bookbiz.listPager(book,pageBean).forEach(System.out::println);
    }

 测试结果

Spring与Mybatis整合&&aop整合pageHelper分页插件_第6张图片

今日笔记分享到这里就结束了,感谢各位能看到这里,喜欢博主的可以关注哦

感谢各位老铁的三连,谢谢谢谢谢了

Spring与Mybatis整合&&aop整合pageHelper分页插件_第7张图片

 

你可能感兴趣的:(spring,mybatis,java)