spring对junit的支持

引入spring和junit4的依赖

复制代码
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.4</version>
</dependency>
<!--        spring对junit支持的依赖,spring6既支持junit4也支持junit5  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.4</version>
        </dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

2.编写测试类

复制代码
@RunWith(SpringJUnit4ClassRunner.class)
// 加载spring.xml配置文件 加载spring容器
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit4Test {

    @Autowired
    private Account account;

    @Test
    public void testSpringJunit4(){
        System.out.println(account.getActno());
    }
}

spring对junit5的支持

  1. 引入依赖

    org.springframework spring-context 6.0.4 org.springframework spring-test 6.0.4 org.junit.jupiter junit-jupiter 5.9.2 test

2.编写测试类

复制代码
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:spring.xml")
public class SpringJunit5Test {

    @Autowired
    private Account account;

    @org.junit.jupiter.api.Test
    public void testSpringJunit5(){
        System.out.println(account.getActno());
    }
}

spring集成mybatis

  1. 引入依赖

    org.springframework spring-context 6.0.21 org.springframework spring-jdbc 7.0.2 mysql mysql-connector-java 8.0.30 org.mybatis mybatis 3.5.19 org.mybatis mybatis-spring 4.0.0 com.alibaba druid 1.1.20 junit junit 4.13.2 test
  2. 创建三层架构需要的包:mapper、pojo、service

  3. 编写pojo类

    public class Account {
    private String actno;
    private double balance;

    复制代码
     @Override
     public String toString() {
         return "Account{" +
                 "actno='" + actno + '\'' +
                 ", balance=" + balance +
                 '}';
     }
    
     public Account() {
     }
    
     public Account(String actno, double balance) {
         this.actno = actno;
         this.balance = balance;
     }
    
     public String getActno() {
         return actno;
     }
    
     public void setActno(String actno) {
         this.actno = actno;
     }
    
     public double getBalance() {
         return balance;
     }
    
     public void setBalance(double balance) {
         this.balance = balance;
     }

    }

  4. 编写mapper接口

    // 该接口不需要写实现类,mybatis会根据动态代理机制自动生成实现类
    public interface AccountMapper {
    int update(Account getAccount);
    int insert(Account getAccount);
    int delete(String actno);
    Account getAccount(String actno);
    List getAllAccount();
    }

  5. 编写mapper配置文件

    insert into t_act(actno, balance) values(#{actno}, #{balance})
    复制代码
     <delete id="delete" >
         delete
         from t_act
         where actno = #{actno}
     </delete>
    
     <update id="update" parameterType="com.ali.pojo.Account">
         update t_act
         set name  = #{name},
             money = #{money}
         where actno = #{actno}
     </update>
    
     <select id="getAccount"  resultType="com.ali.pojo.Account">
         select actno, balance
         from t_act
         where actno = #{actno}
     </select>
    
     <select id="getAllAccount" resultType="com.ali.pojo.Account">
         select actno, balance
         from t_act
     </select>
  6. 编写service和service的实现类

    public interface AccountService {
    int addAccount(Account account);
    int updateAccount(Account account);
    int deleteAccount(String actno);
    Account getAccount(String actno);
    List getAllAccount();
    }

    @Service("accountService")
    public class AccountServiceImpl implements com.ali.service.AccountService {

    复制代码
     @Autowired
     private AccountMapper accountMapper;
    
     @Override
     public int addAccount(Account account) {
         return accountMapper.insert(account);
     }
    
     @Override
     public int updateAccount(Account account) {
         return accountMapper.update(account);
     }
    
     @Override
     public int deleteAccount(String actno) {
         return accountMapper.delete(actno);
     }
    
     @Override
     public Account getAccount(String actno) {
         return accountMapper.getAccount(actno);
     }
    
     @Override
     public List<Account> getAllAccount() {
         return accountMapper.getAllAccount();
     }

    }

  7. 编写jdbc.properties配置文件

    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/spring6?useSSL=false&serverTimezone=UTC
    jdbc.username=root
    jdbc.password=yourpassword

  8. 编写mybaits-config.xml配置文件

    复制代码
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
  9. 编写spring.xml配置文件

相关推荐
Flynn Liang10 分钟前
Spring AI 上生产:限流熔断、密钥与成本治理、私有化/混合部署、降级与 Prompt 灰度架构全解
人工智能·spring·架构·高可用·springai·成本治理·生产架构
Flynn Liang1 小时前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
liangbo73 小时前
Spring系列01:IoC 与 DI 到底解决了什么
java·spring
实泽有之,无泽虚之3 小时前
SQL Server数据库备份与还原详解
数据库·sqlserver
杨凯凡4 小时前
Spring Boot 的 @Transactional 为什么会失效?从代理、自调用到异常回滚的排查实战
java·spring boot·spring·事务·后端开发
哦虎!5 小时前
【JavaEE进阶】SpringBoot
spring
吃一碗粉只付一碗钱15 小时前
16-SqlSugar多库ConfigId与按实体选连接
sqlserver·c#
霸道流氓气质17 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
frjc21 小时前
Spring AI 高级实战:ChatMemory、Tool Calling 与 MCP 架构解析
人工智能·spring·架构
T量子永生1 天前
Unisoc(紫光展锐) Kernel 6.18 DDK 编译框架详解
linux·运维·spring