网站关键词密度太高怎么处理,百度企业网盘,小红书关键词热度查询,seo包年服务前言
Spring与MyBatis整合的意义在于提供了一种结合优势的方式#xff0c;以便更好地开发和管理持久层#xff08;数据库访问#xff09;代码。
这里也是总结了几点主要意义 简化配置#xff1a;Spring与MyBatis整合后#xff0c;可以通过Spring的配置文件来管理和配置M…前言
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整合的意义在于将两个优秀的框架结合起来充分发挥各自的优势提供更好的开发体验和可维护性减少重复代码提高开发效率使得持久层开发更加简单、灵活和可靠。
一.Spring与Mybatis的整合配置
1.新建Maven工程 这里就不过多介绍了翻看主页有详细教程 Idea的Maven部署及常用设置_ChatYU.的博客-CSDN博客 2.添加相关依赖 将properties和dependences中的代码替换成下面的代码 propertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetmaven.compiler.plugin.version3.7.0/maven.compiler.plugin.version!--添加jar包依赖--!--1.spring 5.0.2.RELEASE相关--spring.version5.0.2.RELEASE/spring.version!--2.mybatis相关--mybatis.version3.4.5/mybatis.version!--mysql--mysql.version5.1.44/mysql.version!--pagehelper分页jar依赖--pagehelper.version5.1.2/pagehelper.version!--mybatis与spring集成jar依赖--mybatis.spring.version1.3.1/mybatis.spring.version!--3.dbcp2连接池相关 druid--commons.dbcp2.version2.1.1/commons.dbcp2.versioncommons.pool2.version2.4.3/commons.pool2.version!--4.log日志相关--log4j2.version2.9.1/log4j2.version!--5.其他--junit.version4.12/junit.versionservlet.version4.0.0/servlet.versionlombok.version1.18.2/lombok.version/propertiesdependencies!--1.spring相关--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-orm/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-tx/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion${spring.version}/version/dependency!--2.mybatis相关--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion${mybatis.version}/version/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency!--pagehelper分页插件jar包依赖--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion${pagehelper.version}/version/dependency!--mybatis与spring集成jar包依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion${mybatis.spring.version}/version/dependency!--3.dbcp2连接池相关--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-dbcp2/artifactIdversion${commons.dbcp2.version}/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactIdversion${commons.pool2.version}/version/dependency!--4.log日志相关依赖--!--核心log4j2jar包--dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion${log4j2.version}/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion${log4j2.version}/version/dependency!--web工程需要包含log4j-web非web工程不需要--dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-web/artifactIdversion${log4j2.version}/version/dependency!--5.其他--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/versionscopetest/scope/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion${servlet.version}/versionscopeprovided/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/versionscopeprovided/scope/dependency/dependencies 在指定位置将plugin插件代码进行替换 注如果并不希望使用pluginManagement进行管理插件建议删除 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion${maven.compiler.plugin.version}/versionconfigurationsource${maven.compiler.source}/sourcetarget${maven.compiler.target}/targetencoding${project.build.sourceEncoding}/encoding/configuration
/plugin
plugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.3.2/versiondependencies!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency/dependenciesconfigurationoverwritetrue/overwrite/configuration
/plugin
3. 配置文件
3.1.在resource包中配置添加以下文件
没有resource包就新建一个 文件资源已整合好放在文章顶部解压后将其导入即可 3.2 导入之后开始对spring-mybatis进行配置 将spring-mybatis的文件内容全部进行替换 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/context xmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd!--1. 注解式开发 --!-- 注解驱动 --context:annotation-config/!-- 用注解方式注入bean并指定查找范围com.javaxl.ssm及子子孙孙包--context:component-scan base-packagecom.javaxl.ssm/context:property-placeholder locationclasspath:jdbc.properties/bean iddataSource classorg.apache.commons.dbcp2.BasicDataSourcedestroy-methodcloseproperty namedriverClassName value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}/!--初始连接数--property nameinitialSize value10/!--最大活动连接数--property namemaxTotal value100/!--最大空闲连接数--property namemaxIdle value50/!--最小空闲连接数--property nameminIdle value10/!--设置为-1时如果没有可用连接连接池会一直无限期等待直到获取到连接为止。--!--如果设置为N毫秒则连接池会等待N毫秒等待不到则抛出异常--property namemaxWaitMillis value-1//bean!--4. spring和MyBatis整合 --!--1) 创建sqlSessionFactory--bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean!-- 指定数据源 --property namedataSource refdataSource/!-- 自动扫描XxxMapping.xml文件**任意路径 --property namemapperLocations valueclasspath*:com/javaxl/ssm/**/mapper/*.xml/!-- 指定别名 --property nametypeAliasesPackage valuecom/javaxl/ssm/**/model/!--配置pagehelper插件--property namepluginsarraybean classcom.github.pagehelper.PageInterceptorproperty namepropertiesvaluehelperDialectmysql/value/property/bean/array/property/bean!--2) 自动扫描com/javaxl/ssm/**/mapper下的所有XxxMapper接口(其实就是DAO接口)并实现这些接口--!-- 即可直接在程序中使用dao接口不用再获取sqlsession对象--bean classorg.mybatis.spring.mapper.MapperScannerConfigurer!--basePackage 属性是映射器接口文件的包路径。--!--你可以使用分号或逗号 作为分隔符设置多于一个的包路径--property namebasePackage valuecom/javaxl/ssm/**/mapper/property namesqlSessionFactoryBeanName valuesqlSessionFactory//beanbean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource //beantx:annotation-driven transaction-managertransactionManager /aop:aspectj-autoproxy/
/beans替换后将里面的java包中路径替换成自己的路径 注只需要修改javaxl即可后面可自行添加自己的路径
当我们修改好后打开右侧导航栏中的Maven双击标注的红框如果没有这个选项则说明没有安装这个插件在插件库中搜索mybatis-generator进行安装建议观看主页
Mybatis的环境搭建及常用插件安装https://blog.csdn.net/weixin_73320743/article/details/132393743?spm1001.2014.3001.5502其中有常用的插件安装详细教程 生成完成后不要再次点击防止覆盖 当我们需要在Java文件中进行测试时需要将pom.xml中的junit中的scope进行注释 4.通过注解将bookmapper给spring进行管理
4.1 Repository 当我们将Spring与Mybatis进行整合后加入注解后就不需要再配置JavaBean了我们在前面的spring-mybatis整合时指定了扫描范围 4.2 Autowired
它可以自动将匹配的依赖对象注入到相应的变量、方法或构造函数中,为我们提高get、set方法
4.3 Data
自动为模型实体类提供get、set、toString方法
4.4AllArgsConstructorNoArgsConstructor
自动添加有参无参构造器
4.5ContextConfiguration(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.测试方法
Testpublic 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);} 测试结果 今日笔记分享到这里就结束了感谢各位能看到这里喜欢博主的可以关注哦
感谢各位老铁的三连谢谢谢谢谢了