Spring与MyBatis整合的意义在于提供了一种结合优势的方式,以便更好地开发和管理持久层(数据库访问)代码。
这里也是总结了几点主要意义
简化配置:Spring与MyBatis整合后,可以通过Spring的配置文件来管理和配置MyBatis的相关配置,例如数据源、事务管理等,而不需要额外的独立配置文件。这样可以减少配置的复杂性,提高开发效率。
提供事务管理:Spring框架本身提供了强大的事务管理功能,通过与MyBatis整合,可以将MyBatis的数据库操作纳入到Spring的事务管理中,实现数据库操作的事务控制,保证数据的一致性和完整性。
实现依赖注入:Spring框架的核心特性之一是依赖注入(DI),它可以帮助我们更好地管理对象之间的依赖关系。通过与MyBatis整合,可以将MyBatis的Mapper对象注入到Spring管理的Bean中,使得在业务逻辑中可以方便地使用MyBatis的数据访问功能,而不需要手动创建Mapper对象。
提供AOP支持:Spring框架提供了面向切面编程(AOP)的支持,可以方便地进行日志记录、事务管理、异常处理等横切逻辑的封装。通过与MyBatis整合,可以将这些横切逻辑应用到MyBatis的SQL执行过程中,提供更强大的日志记录、性能监控等功能。
提供更好的扩展性:通过整合Spring和MyBatis,可以更好地支持应用程序的扩展和维护。例如,可以利用Spring的Bean的生命周期管理,实现对Mapper对象的统一管理和释放资源;还可以利用Spring的AOP功能,对MyBatis进行封装,以应对未来需求变化和功能扩展。
总而言之,Spring与MyBatis整合的意义在于将两个优秀的框架结合起来,充分发挥各自的优势,提供更好的开发体验和可维护性,减少重复代码,提高开发效率,使得持久层开发更加简单、灵活和可靠。
这里就不过多介绍了,翻看主页有详细教程
Idea的Maven部署及常用设置_ChatYU.的博客-CSDN博客
将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.target}
${project.build.sourceEncoding}
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
mysql
mysql-connector-java
${mysql.version}
true
没有resource包就新建一个
文件资源已整合好放在文章顶部,解压后将其导入即可
将spring-mybatis的文件内容全部进行替换
helperDialect=mysql
替换后,将里面的java包中路径替换成自己的路径
注:只需要修改javaxl即可,后面可自行添加自己的路径
当我们修改好后,打开右侧导航栏中的Maven,双击标注的红框,如果没有这个选项则说明没有安装这个插件,在插件库中搜索mybatis-generator进行安装,建议观看主页
Mybatis的环境搭建及常用插件安装https://blog.csdn.net/weixin_73320743/article/details/132393743?spm=1001.2014.3001.5502其中有常用的插件安装详细教程
当我们需要在Java文件中进行测试时需要将pom.xml中的junit中的scope进行注释
当我们将Spring与Mybatis进行整合后加入注解后就不需要再配置JavaBean了,我们在前面的spring-mybatis整合时指定了扫描范围
它可以自动将匹配的依赖对象注入到相应的变量、方法或构造函数中,为我们提高get、set方法
自动为模型实体类提供get、set、toString方法
自动添加有参无参构造器
自动加载花括号中的spring上下文,搭配@RunWith(SpringJUnit4ClassRunner.class)使用
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;
}
}
* :返回任意类型
*.. : 任意包,任意层级
*Service :以Service结尾的类/接口
*Page:以Page结尾的方法
.. :任意参数
符合上述条件即为目标类或目标方法
@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);
}
测试结果
今日笔记分享到这里就结束了,感谢各位能看到这里,喜欢博主的可以关注哦
感谢各位老铁的三连,谢谢谢谢谢了