哈尔滨网站设计哪家好,安庆网站建设工作室,重庆建设门户网站,网站官网怎么做spring 集成 mybatis 1、spring对junit的支持1.1、对junit4的支持1.2 对junit5的支持 2、Spring6集成MyBatis3.52.1 实现步骤2.2 实现 1、spring对junit的支持
1.1、对junit4的支持
依赖
?xml version1.0 encodingUTF-8?
project xml… spring 集成 mybatis 1、spring对junit的支持1.1、对junit4的支持1.2 对junit5的支持 2、Spring6集成MyBatis3.52.1 实现步骤2.2 实现 1、spring对junit的支持
1.1、对junit4的支持
依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.powernode/groupIdartifactIdspring6-015-junit/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packaging!--仓库--repositories!--spring里程碑版本的仓库--repositoryidrepository.spring.milestone/idnameSpring Milestone Repository/nameurlhttps://repo.spring.io/milestone/url/repository/repositoriesdependencies!--spring context依赖--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.0.0-M2/version/dependency!--spring对junit的支持相关依赖--dependencygroupIdorg.springframework/groupId既支持junit4也支持5artifactIdspring-test/artifactIdversion6.0.0-M2/version/dependency!--junit4依赖-- 记得要4.12及以上dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope/dependency/dependenciespropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/properties/projectpackage com.cky.pojo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;Component
public class User {Value(cky)private String name;public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return User{ name name \ };}public User(String name) {this.name name;}public User() {}
}
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagecom.cky.pojo/
/beanspackage com.cky.test;import com.cky.pojo.User;
import jakarta.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(classpath:spring.xml)
public class springjunit4 {Autowiredprivate User user;Testpublic void test(){System.out.println(user.getName());}
} 1.2 对junit5的支持
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.powernode/groupIdartifactIdspring6-015-junit/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packaging!--仓库--repositories!--spring里程碑版本的仓库--repositoryidrepository.spring.milestone/idnameSpring Milestone Repository/nameurlhttps://repo.spring.io/milestone/url/repository/repositoriesdependencies!--spring context依赖--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.0.0-M2/version/dependency!--spring对junit的支持相关依赖--dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion6.0.0-M2/version/dependency!--junit5依赖--dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.9.0/versionscopetest/scope/dependency/dependenciespropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/properties/projectpackage com.cky.test;import com.cky.pojo.User;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
ExtendWith(SpringExtension.class)
ContextConfiguration(classpath:spring1.xml)
public class springjunit5 {Autowiredprivate User user;Testpublic void testUser(){System.out.println(user.getName());}
} 2、Spring6集成MyBatis3.5
2.1 实现步骤
● 第一步准备数据库表 ○ 使用t_act表账户表 ● 第二步IDEA中创建一个模块并引入依赖 ○ spring-context ○ spring-jdbc ○ mysql驱动 ○ mybatis ○ mybatis-springmybatis提供的与spring框架集成的依赖 ○ 德鲁伊连接池 ○ junit ● 第三步基于三层架构实现所以提前创建好所有的包 ○ com.powernode.bank.mapper ○ com.powernode.bank.service ○ com.powernode.bank.service.impl ○ com.powernode.bank.pojo ● 第四步编写pojo ○ Account属性私有化提供公开的setter getter和toString。 ● 第五步编写mapper接口 ○ AccountMapper接口定义方法 ● 第六步编写mapper配置文件 ○ 在配置文件中配置命名空间以及每一个方法对应的sql。 ● 第七步编写service接口和service接口实现类 ○ AccountService ○ AccountServiceImpl ● 第八步编写jdbc.properties配置文件 ○ 数据库连接池相关信息 ● 第九步编写mybatis-config.xml配置文件 ○ 该文件可以没有大部分的配置可以转移到spring配置文件中。 ○ 如果遇到mybatis相关的系统级配置还是需要这个文件。 ● 第十步编写spring.xml配置文件 ○ 组件扫描 ○ 引入外部的属性文件 ○ 数据源 ○ SqlSessionFactoryBean配置 ■ 注入mybatis核心配置文件路径 ■ 指定别名包 ■ 注入数据源 ○ Mapper扫描配置器 ■ 指定扫描的包 ○ 事务管理器DataSourceTransactionManager ■ 注入数据源 ○ 启用事务注解 ■ 注入事务管理器 ● 第十一步编写测试程序并添加事务进行测试
2.2 实现 具体的不在这里写了 主要写一下配置文件 mybatis-config.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration
settings
!-- 开启mybaits日志输出 这里是标准控制台输出 有助于看到sql语句--setting namelogImpl valueSTDOUT_LOGGING/
/settings!--其他都可以放在spring中写--
/configurationspring.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd!--包扫描--context:component-scan base-packagecom.cky/context:component-scan!--外部属性配置文件--context:property-placeholder locationjdbc.properties /!--数据源--bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.name}/property namepassword value${jdbc.pwd}//bean
!-- sqlsessionfactorybean--bean classorg.mybatis.spring.SqlSessionFactoryBean!--mybatis核心配置文件路径--property nameconfigLocation valuemybatis-config.xml/!--注入数据源--property namedataSource refdataSource/!--起别名--property nametypeAliasesPackage valuecom.cky.pojo//bean!--Mapper扫描器--bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecom.cky.mapper//bean!--事务管理器--bean idtxManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource//bean!--开启事务注解--tx:annotation-driven transaction-managertxManager/tx:annotation-driven/beansjabc.properties
jdbc.drivercom.mysql.cj.jdbc.Driver
jdbc.urljdbc:mysql://localhost:3306/test
jdbc.nameckytest
jdbc.pwd123456pom
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIddemo/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.1.5/version/dependency!--log4j2的依赖--dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.19.0/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j2-impl/artifactIdversion2.19.0/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope/dependency/dependencies/project测试
package com.cky.test;import com.cky.service.AccountService;
import com.cky.service.impl.AccountServiceimpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class test {Testpublic void test1(){ApplicationContext applicationContextnew ClassPathXmlApplicationContext(spring.xml);AccountService accountservice applicationContext.getBean(accountservice, AccountService.class);accountservice.transfer(1001,1022,10000.0);}
}
注意由于service 有接口 所以这里必须用service 对象 不能用实现类对象因为有接口底层用cglib来实现动态代理。