十四、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();}}
    }
    

    在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...