mybatis与spring集成

本期内容:

        1、mybatis与spring集成

        2、aop整合pagehelper插件

一、mybatis与spring集成

1、新建maven模块

2、导入依赖

添加spring相关依赖(5.0.2.RELEASE):

spring-core、spring-beans、spring-context、spring-orm、spring-tx、

spring-aspects、spring-web

添加mybatis相关依赖:

 mybatis核心:mybatis(3.4.5)、Mybatis分页:pagehelper(5.1.2)

 spring整合mybatis(1.3.1):

mybatis-spring

添加dbcp2连接池:

commons-dbcp2(2.1.1)、commons-pool2(2.4.3)

添加日志配置(2.9.1):

log4j-core、 log4j-api、log4j-web

其他:

junit(4.12)、javax.servlet-api(4.0.0)、lombok(1.18.2)

 注:使用mybatis-generator插件,pom文件添加支持  

pom.xml:




    
        lv
        org.example
        1.0-SNAPSHOT
    
    4.0.0

    ssm
    war

    ssm Maven Webapp
    
    http://www.example.com

    
        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
        

    


    
        ssm
        
            
            
                src/main/java
                
                    **/*.xml
                
            
            
            
                src/main/resources
                
                    *.properties
                    *.xml
                
            
        
        
            
                
                    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
                    
                

                
                    maven-clean-plugin
                    3.1.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
            
        
    

记得切换运行目录:

mybatis与spring集成_第1张图片

3、利用mybatis逆向工程生成模型层层代码

mybatis与spring集成_第2张图片

 将所需的文件导入,我们这就引用了上一期内容:

mybatis与spring集成_第3张图片

4、编写配置文件applicationContext-mybatis.xml

 在resources类中新建文件applicationContext-mybatis.xml



    
    
    
    
    

    

    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
    
        
        
        
        
        
        
        
        
            
                
                    
                        
                            helperDialect=mysql
                        
                    
                
            
        
    

    
    
    
        
        
        
        
    

    
        
    
    
    

5、Spring Test+junit完美组合

①、在工程的pom文件中增加spring-test的依赖

我已经在前面就增加了依赖


       org.springframework
       spring-test
       ${spring.version}
     

②、创建测试类,在该类上加上两个注解

   @RunWith(SpringJUnit4ClassRunner.class)
   @ContextConfiguration(locations={"classpath:applicationContext.xml"})

mybatis与spring集成_第4张图片

 同样service层也需注解,这样无需写get/set方法:

mybatis与spring集成_第5张图片

 测试一下查看的方法,检查是否成功:

mybatis与spring集成_第6张图片

 二、aop整合pagehelper

如果一个项目里有很多分页,每次都按照上一期内容写很麻烦,内容重复,这节内容就是使用AOP编程解决分页代码重复的问题以下是每次分页需要写的方法

mybatis与spring集成_第7张图片

根据总结分页内容:

        ①、定义分页的方法,分页方法至少要传递两个参数

        ②、 分页的核心关键点:pageBean、PageHelper

        ③、代码逻辑顺序

                PageHelper.startPage 启动分页

                正常业务查询——》加入环绕通知中

                处理查询的结果集——》加入环绕通知中

1、新建一个切面类(类型为Java类class)

mybatis与spring集成_第8张图片

 2、切面类上要定义规则,只有分页方法才能进入切面类

3、必须要判断*Pager是否传递了pagebean

4、编码阶段

①、拿到被代理的方法的参数列表,进行遍历,如果列表包含了pagebean,那么给pagebean赋值

②、核心代码

        ——》PageHelper.startPage  启动分页

        ——》处理查询的结果集

PagerAspect:

package com.lv.aspect;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lv.util.PageBean;
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;

@Component
@Aspect
public class PagerAspect {

    @Around("execution(* *..*Service.*Pager(..))")
    public Object invoke(ProceedingJoinPoint args) throws Throwable {
        Object[] params = args.getArgs();//argument参数
        PageBean pageBean = null;
        for (Object param : params) {
            if(param instanceof PageBean){
                pageBean = (PageBean)param;
                break;
            }
        }

        if(pageBean != null && pageBean.isPagination()) {
            PageHelper.startPage(pageBean.getPage(), pageBean.getRows());
        }
        Object list = args.proceed(params);

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

}

当执行时未进入切面,执行不出效果。

解决方案:双击clean刷新一下文件

mybatis与spring集成_第9张图片

已进入:

mybatis与spring集成_第10张图片

 获得分页:

mybatis与spring集成_第11张图片

 

本期内容结束~

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