Spring和mybatis整合

一、Spring整合MyBatis

1. 导入pom依赖
1.1 添加spring相关依赖(5.0.2.RELEASE)

       spring-core

       spring-beans

       spring-context

       spring-orm

       spring-tx

       spring-aspects

       spring-web

1.2 添加mybatis相关依赖

       mybatis核心:mybatis(3.4.5)

       Mybatis分页:pagehelper(5.1.2)

1.3 spring整合mybatis(1.3.1)

       mybatis-spring

1.4 添加dbcp2连接池

       commons-dbcp2(2.1.1)

       commons-pool2(2.4.3)

1.5 添加日志配置(2.9.1)

       log4j-core

       log4j-api

       log4j-web

1.6 其他

       junit(4.12)

       javax.servlet-api(4.0.0)

       lombok(1.18.2) 


  4.0.0
  org.example
  mybatis_spring
  war
  1.0-SNAPSHOT
  mybatis_spring Maven Webapp
  http://maven.apache.org
 
    
        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
        
    
 
  
      
          
          
              src/main/java
              
                  **/*.xml
              
          
          
          
              src/main/resources
              
                  jdbc.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
              
          
      
      mybatis_spring
  

2、插件生成模型层代码 

Spring和mybatis整合_第1张图片

 

3. 编写配置文件

注:配置文件的所有路径都需根据自身修改。

3.1  在resources 目录下添加jdbc.properties 文件,用于配置数据库连接四要素。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

3.2 添加 generatorConfig.xml 配置代码生成器




    
    

    
    

    
    
        
        
            
             
        

        
        

        
        
            
            
        

        
        
        
        
            
            
            
            
            
            
            
            
        

        
        
            
            
        

        
        
        
        
        
            
            
        

        
        
        
        
        
        
               
               
            
            
            
            
        

        

3.3 添加log4j2日志文件


 


	
		
		/root/workspace/lucenedemo/logs
		/root/workspace/lucenedemo/logs/error
		/root/workspace/lucenedemo/logs/warn
		%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n
	
 
	
		
		
			
			
			
			
			
		
 
		
		
		
			
		
		
		
			
			
			
			
				
				
				
				
				
				
			
		
 
		
			
			
			
				
				
			
			
			
		
 
		
			
			
			
				
				
				
			
		
 
	
 
	
	
		
		
		
 
		
		
		
		
		
		
 
 
		
		
			
			
			
			
		
 
	
 

3.4 添加spring-context.xml 上下文配置文件 ⭐



 
    
    

3.5 添加spring与mybatis整合的配置文件 spring-mybatis.xml 




    
    
    
    
    
    
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
    
        
        
        


        
        
        
        
        
        
            
                
                    
                        
                            helperDialect=mysql
                        
                    
                
            
        
    

    
    
    
        
        
        
        
    

    
        
    
    
    

4. 注解式开发


4.1 @Repository 是 Spring 框架中的一个注解,它用于标记一个类为数据访问层(DAO)的组件。被标记为 @Repository 的类通常用于执行数据库操作,例如查询、插入、更新和删除等。 

 

作用:1.自动扫描和装配 2.异常转换 3.事务支持

Spring和mybatis整合_第2张图片

4.2 @Service 是 Spring 框架中的一个注解,它用于标记一个类为业务逻辑层(Service)的组件。被标记为 @Service 的类通常用于实现业务逻辑的处理和协调,它们通常会调用 DAO 层的方法来进行数据访问和持久化操作。

Spring和mybatis整合_第3张图片 

 

4.3 实体便捷注释 

package com.wenhao.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//1.18.2
//萝卜组件的的作用:相当于get,set,tostring
@Data
//相当于get,set,tostring
@AllArgsConstructor
//有参构造
@NoArgsConstructor
//无参构造器
public class Book {

    private Integer bid;

    private String bname;

    private Float price;

}

5. 编写Junit测试类

Spring和mybatis整合_第4张图片

 这里用到的三种注解方法:

5.1 @Autowired:用于自动装配依赖关系。通过该注解,可以将一个对象自动注入到另一个对象中,省去了手动配置依赖关系的步骤。

5.2 @RunWith 是 JUnit 框架中的一个注解,它用于指定运行测试类的运行器(Runner)。运行器是 JUnit 框架的一部分,它负责执行测试类中的测试方法,并提供额外的功能和扩展。

5.3 @ContextConfiguration 是 Spring 框架中的一个注解,它用于指定测试类或测试方法运行时的 Spring 上下文配置。它告诉测试框架在运行测试之前加载指定的 Spring 配置文件或配置类,并创建相应的 Spring 上下文。 

测试

Spring和mybatis整合_第5张图片

二、AOP整合pageHelper分页插件

1. 创建一个AOP切面

package com.wenhao.aspect;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wenhao.utils.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;

/**
 * @ 用户  liwen
 * @当前日期 2023/8/25
 * @当前项目名称 ssm
 */
@Aspect
//代表切面类
@Component
//代表将此类交给spring管理
public class PagerAspect {


//*:任意返回值
//    *..代表任意包
//    *service :以service结尾的类
    //以pager结尾的方法,..:任意参数
//    符合上述条件的,即为目标类以及目标方法


    @Around("execution(* *..*biz.*pager(..))")
    public Object invoke(ProceedingJoinPoint args) throws Throwable {

        PageBean page = null;
//获取目标方法中的所有参数
        Object[] ags = args.getArgs();

//        遍历
        for (Object param : ags) {
//            如果有个参数是pagebean
            if (param instanceof PageBean) {
//                就将参数进行强转
                page = (PageBean) param;
                break;
            }
        }

        //如果pagebean不为空,开启分页
        if (page!=null && page.isPagination())
            PageHelper.startPage(page.getPage(),page.getRows());

//        执行目标方法
        Object lst = args.proceed();
        if (page!=null && page.isPagination())
//            示例pageinfo获取参数
        {
            PageInfo pageInfo = new PageInfo((List) lst);
            page.setTotal((int) pageInfo.getTotal());
            System.out.println("haha"+pageInfo.getPages());
        }
return lst;
    }

}



 

2. @Around("execution(* *..*xxx.*xxx(..))") 表达式解析


@Around("execution(* *..*Biz.*Pager2(..))") 这个表达式是一个切点表达式,用于定义一个切点,以便在使用 AspectJ 或 Spring AOP 进行方法拦截时进行匹配。

@Around:这是一个通知类型的注解,表示在目标方法执行前后都会执行通知逻辑。
"execution(* *..* Service.*Pager(..))":这是切点表达式的一部分,用于匹配符合条件的方法。具体解释如下:
execution:表示匹配方法的执行。
*:表示匹配任意返回类型。
*..*:表示匹配任意包名和子包名。
Biz:表示匹配包含 "Biz" 字符串的类名。
*pagePager2:表示匹配以 "pagePager2" 结尾的方法名。
(..):表示匹配任意参数列表。
        综合起来,这个切点表达式的含义是:匹配任意返回类型、任意包名和子包名下的包含 "Service" 字符串的类中以 "Pager" 结尾的方法,并在这些方法执行前后执行通知逻辑。
 

3. 编写测试

    @Test
     public void querypager() {
        Map map= new HashMap();
        map.put("bname","圣墟");
        PageBean page= new PageBean();
        page.setPage(2);
        page.setRows(10);

        book.querypager(map,page).forEach(System.out::println);

    }

运行结果:

Spring和mybatis整合_第6张图片

 

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