SpringAOP实现多数据源切换

本文介绍了如何利用Spring AOP和注解实现多数据源切换。首先回顾了JDBC的基础,如Driver接口、DataSource接口等。接着,详细讨论了Spring AOP的核心概念,包括切面、连接点、切点、增强等。然后,展示了如何通过自定义注解、切面类以及AbstractRoutingDataSource的实现来完成数据源的动态切换。最后,配置了事务管理器,实现完整的多数据源解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单聊一下JDBC

直接上图
在这里插入图片描述
只要是第三方接口我们要做的就是引入jar包

Driver接口

首先java提供了一个Driver接口,由数据库厂商来实现Driver接口

package java.sql;


public interface Driver {
   
	//用来获取一个数据库连接
    Connection connect(String url, java.util.Properties info)
        throws SQLException;
        
    // 这个是 Driver实现类里的静态代码块 
    // Dirver被加载时会向DriverManager里创建一个Driver
	static {
       
		try {
          
		 	java.sql.DriverManager.registerDriver(new Driver()); 
		} catch (SQLException E) {
   
			throw new RuntimeException("Can't register driver!");    		        
		}
	}
}

DriverManager类与Connection接口

DriverManager类就是获取连接的,先看Connection接口


package java.sql;

public interface Connection  extends Wrapper, AutoCloseable {
   

	//创建一个可以执行静态sql的Statement对象
    Statement createStatement() throws SQLException;
	//创建一个可以执行带参数的sql预编译语句的PreparedStatement对象
    PreparedStatement prepareStatement(String sql)throws SQLException;
	//创建一个可以执行储蓄过程的CallableStatement对象
    CallableStatement prepareCall(String sql) throws SQLException;

	//开启或关闭自动提交
    void setAutoCommit(boolean autoCommit) throws SQLException;
	//获取自动提交状态
    boolean getAutoCommit() throws SQLException;
	//提交
    void commit() throws SQLException;
	//回滚
    void rollback() throws SQLException;
	//关闭连接
    void close() throws SQLException;
}

Statement接口

Statement

Statement st= conn.createStatement();
//建立一个sql对象,一个sql对象对于一个Statement
String sql;
sql="select name from user ";
ResultSet ret=  st.executeQuery(sql);//接收sql语句
while (ret.next()){
   //判读是否有由数据
    String name=ret.getString("name");
    System.out.println(name);
}

PreparedStatement

String sql="insert into user(name,pwd) values(?,?)";
PreparedStatement st=conn.prepareStatement(sql);
st.setString(1,"lkkkk");
st.setString
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值