添加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
记得切换运行目录:
将所需的文件导入,我们这就引用了上一期内容:
在resources类中新建文件applicationContext-mybatis.xml
helperDialect=mysql
①、在工程的pom文件中增加spring-test的依赖
我已经在前面就增加了依赖
org.springframework
spring-test
${spring.version}
②、创建测试类,在该类上加上两个注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
同样service层也需注解,这样无需写get/set方法:
测试一下查看的方法,检查是否成功:
如果一个项目里有很多分页,每次都按照上一期内容写很麻烦,内容重复,这节内容就是使用AOP编程解决分页代码重复的问题。以下是每次分页需要写的方法
根据总结分页内容:
①、定义分页的方法,分页方法至少要传递两个参数
②、 分页的核心关键点:pageBean、PageHelper
③、代码逻辑顺序
PageHelper.startPage 启动分页
正常业务查询——》加入环绕通知中
处理查询的结果集——》加入环绕通知中
①、拿到被代理的方法的参数列表,进行遍历,如果列表包含了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刷新一下文件
已进入:
获得分页:
本期内容结束~