十四、Spring6集成MyBatis3.5
创始人
2024-05-29 19:31:45
0

1 实现步骤

  • 第一步:准备数据库表

    • 使用t_act表(账户表)
      在这里插入图片描述
      在这里插入图片描述
  • 第二步:IDEA中创建一个模块,并引入依赖

    • spring-context
    • spring-jdbc
    • mysql驱动
    • mybatis
    • mybatis-spring:mybatis提供的与spring框架集成的依赖
    • 德鲁伊连接池
    • junit
    
    4.0.0org.examplespring6-011-sm1.0-SNAPSHOTjarorg.springframeworkspring-context6.0.2org.springframeworkspring-jdbc6.0.2mysqlmysql-connector-java8.0.30org.mybatismybatis3.5.10        org.mybatismybatis-spring3.0.1com.alibabadruid1.2.13junitjunit4.13.2test1717
    
    
  • 第三步:基于三层架构实现,所以提前创建好所有的包

    • com.powernode.bank.mapper
    • com.powernode.bank.service
    • com.powernode.bank.service.impl
    • com.powernode.bank.pojo
  • 第四步:编写pojo

    • Account,属性私有化,提供公开的setter getter和toString。
    package com.powernode.bank.pojo;/*** 银行账户类*/
    public class Account {private String actno;private Double balance;// 省略构造方法,get、set方法,toString方法
    
  • 第五步:编写mapper接口

    • AccountMapper接口,定义方法
    package com.powernode.bank.mapper;import com.powernode.bank.pojo.Account;import java.util.List;public interface AccountMapper {/*** 新增账户* @param account* @return*/int insert(Account account);/*** 根据账号删除账户* @param actno* @return*/int deleteByActno(String actno);/*** 修改账户* @param account* @return*/int update(Account account);/*** 根据账号查询账户* @param actno* @return*/Account selectByActno(String actno);/*** 查询所有账户* @return*/List selectAll();
    }
    
  • 第六步:编写mapper配置文件

    • 在配置文件中配置命名空间,以及每一个方法对应的sql。
      注意xml路径要和java文件路径保持一致
      在这里插入图片描述
    
    insert into t_act values(#{actno}, #{balance})delete from t_act where actno = #{actno}update t_act set balance = #{balance} where actno = #{actno};
    
    
  • 第七步:编写service接口和service接口实现类

    • AccountService
    package com.powernode.bank.service;import com.powernode.bank.pojo.Account;import java.util.List;public interface AccountService {/*** 添加账户* @param account* @return*/int save(Account account);/*** 删除账户* @param actno* @return*/int deleteByActno(String actno);/*** 修改账户* @param account* @return*/int modify(Account account);/*** 通过账号查询账户* @param actno* @return*/Account getByActno(String actno);/*** 查询所有账户* @return*/List getAll();/*** 转账方法* @param fromActno* @param toActno* @param money*/void transfer(String fromActno, String toActno, double money);}
    
    • AccountServiceImpl
    package com.powernode.bank.service.impl;import com.powernode.bank.mapper.AccountMapper;
    import com.powernode.bank.pojo.Account;
    import com.powernode.bank.service.AccountService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;import java.util.List;
    @Transactional
    @Service("accountService")
    public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountMapper accountMapper;@Overridepublic int save(Account account) {return accountMapper.insert(account);}@Overridepublic int deleteByActno(String actno) {return accountMapper.deleteByActno(actno);}@Overridepublic int modify(Account account) {return accountMapper.update(account);}@Overridepublic Account getByActno(String actno) {return accountMapper.selectByActno(actno);}@Overridepublic List getAll() {return accountMapper.selectAll();}@Overridepublic void transfer(String fromActno, String toActno, double money) {Account fromAct = accountMapper.selectByActno(fromActno);if (fromAct.getBalance() < money) {throw new RuntimeException("余额不足");}Account toAct = accountMapper.selectByActno(toActno);fromAct.setBalance(fromAct.getBalance() - money);toAct.setBalance(toAct.getBalance() + money);int count = accountMapper.update(fromAct);count += accountMapper.update(toAct);if (count != 2) {throw new RuntimeException("转账失败");}}
    }
    
  • 第八步:编写jdbc.properties配置文件

    • 数据库连接池相关信息
    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/spring6
    jdbc.username=root
    jdbc.password=root
    
  • 第九步:编写mybatis-config.xml配置文件

    • 该文件可以没有,大部分的配置可以转移到spring配置文件中。
    • 如果遇到mybatis相关的系统级配置,还是需要这个文件。
    
    
    
    
  • 第十步:编写spring.xml配置文件

    • 组件扫描
    • 引入外部的属性文件
    • 数据源
    • SqlSessionFactoryBean配置
      • 注入mybatis核心配置文件路径
      • 指定别名包
      • 注入数据源
    • Mapper扫描配置器
      • 指定扫描的包
    • 事务管理器DataSourceTransactionManager
      • 注入数据源
    • 启用事务注解
      • 注入事务管理器
      
      
      
      
  • 第十一步:编写测试程序,并添加事务,进行测试

    package com.powernode.spring6.test;import com.powernode.bank.service.AccountService;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;public class SMTest {@Testpublic void testSM(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");AccountService accountService = applicationContext.getBean("accountService", AccountService.class);try {accountService.transfer("act-001","act-002",10000);System.out.println("转账成功");}catch (Exception e){e.printStackTrace();}}
    }
    

    在这里插入图片描述

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...