SpringBoot整合MybatisPius实现数据库多数据源及读写分离

SpringBoot整合MybatisPius实现数据库多数据源及读写分离,第1张

其他主从方式配置模板

@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。

强烈建议只注解在service实现上。

某些springBoot的版本上面可能无法排除(尝试使用以下方式排除)

Java连数据库不管用不用框架底层都是JDBC,而JDBC对每种类型数据库需要重新配置驱动,多个数据库同时用就没法单独使用连接池了,每个数据库都要打开自己的连接池的。你可以考虑自己写一个适配器层接口和实现,实现里面写连接多种数据库的逻辑,在里面调用原生JDBC代码或Hibernate, MyBatis那些框架都可以,这样上面那些层都不用改变了。

就像下面这个(示例,只写了查,用Hibernate,其他类似):

public interface MultiTypeDBSupport {

public List getData();

//

}

public class MultiTypeDBSupportImpl implements MultiTypeDBSupport {

public SessionFactory getSessionFactory(Stirng configFile){

SessionFactory sessionFactory = Configuration()config(configFile)buildSessionFactory();

}

public List getData(){

SessionFactory sessionFactoryMySQL = getSessionFactory("hibernateMySQLcfgxml");

Session sessionMySQL = sessionFactoryMySQLopenSession();

List users1 = sessionMySQLcreateQuery("from User");

SessionFactory sessionFactoryOracle = getSessionFactory("hibernateOraclecfgxml");

Session sessionOracle = sessionFactoryOracleopenSession();

List users2 = sessionOraclecreateQuery("from User");

users1addAll(users2);

return users1;

}

//

}

本篇文章主要介绍了使用MyBatis框架完成数据库的增、删、改、查 *** 作。

准备工作

运行schemasql和datasql脚本文件中的 SQL 语句创建t_user表并添加部分测试数据。

schemasql:

datasql:

使用MyBatis框架 *** 作数据库步骤:

(1)定义Java实体

Userjava

(2)定义Mapper接口

UserDaojava

(3)编写XML映射文件

UserDaoxml

(4)编写MyBatis主配置文件

MyBatis使用 XML 文件格式描述配置信息,内容如下:

(5)编写测试类

Demojava

输出结果:

Mybatis所支持的jdbcType类型,是固定的,枚举如下:

BIT、 FLOAT、CHAR、TIMESTAMP、OTHER、 UNDEFINED、TINYINT、REAL、VARCHAR、BINARY、BLOB、 NVARCHAR、SMALLINT、DOUBLE、LONGVARCHAR、VARBINARY、CLOB、NCHAR、INTEGER、NUMERIC、DATE、LONGVARBINARY、BOOLEAN 、NCLOB、BIGINT、DECIMAL、TIME、NULL、CURSOR

在书写jabcType类型的时候,是有严格的大小写的区分的,否则会抛出异常。

跟你之前只有一个数据库写SQL一样的。只不过表明前面带上数据库的schema名称就好了,跟写单库的表查询一样一样的。

select  from user`user` u 

left join trade`trade_order` t 

on 

u`id` = t`user_id`

为了给你讲解清楚,特地亲手创建了两个数据库,以及两张表。希望对你有帮助,还望采纳最佳噢!谢谢 ^_^

对于MyBatis连接Oracle数据库、分两种环境:

1、SQL上下文就是不允许分号结尾,你都发现规律了

2、PL/SQL上下文可以批量而且必须带分号结尾:

begin

alter session force parallel query parallel 8;

select  from c_tbtranslateconfig where intdel=0;

alter session disable parallel query;

end;

把上文作为整个字符串传给MyBatis即可,但问题是select查询不赋值取值就没意义了。

也许你可以试下:

select  /+parallel(t,8)/ from c_tbtranslateconfig t where intdel=0;

以上就是关于SpringBoot整合MybatisPius实现数据库多数据源及读写分离全部的内容,包括:SpringBoot整合MybatisPius实现数据库多数据源及读写分离、请问各位大神,java如何实现同时支持多种数据库啊、MyBatis源码解读 - 使用MyBatis *** 作数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9826529.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存