spring 快速开发工具包,自动集成了mybatis,sharding-jdbc,redis等
ps:如果你的项目涉及到分库分表,可使用sharding-jdbc包,或选用其它数据库中间件。
基于约定大于配置的理念,项目的module应该命名为com.dk.*.worker,星号自己命名,这样spring会自动扫描相对于的package注入bean,实现项目初始能力的赋予。
@ComponentScan(basePackages = "com.dk.foundation.common,com.dk.foundation.engine,com.dk.*.mapper,com.dk.*.service,com.dk.*.worker")
public class EngineConfig {
}
添加项目依赖
<dependency>
<groupId>com.dk.foundation</groupId>
<artifactId>dk-foundation-engine-declare-datasource</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
在项目的启动文件添加@EnableEngineStart即可赋予项目一些初始能力,像是按下汽车一键启动键,如下所示
@MapperScan("com.dk.test.*.mapper")
@EnableEngineStart
public class Startup {
public static void main(String[] args) throws Exception {
SpringApplication.run(Startup.class, args);
}
}
方式一:DynamicDataSourcePlugin
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<plugin interceptor="com.dk.foundation.engine.DynamicDataSourcePlugin" />
</plugins>
</configuration>
插件检测到你的sql脚本是插入、更新、删除的语句,自动选择主数据源;如果是查询语句,则随机选择一个读数据源;开启了事务会根据事务选择数据源。
方式二:@DataSource注解方式
@DataSource(name="master")
public List<User> selectListBySQL()
{
List<User> users = userMapper.selectListBySQL();
return users;
}
在使用DynamicDataSourcePlugin同时使用@DataSource注解的时候,会选择注解指定的数据源。
@Transactional
@DataSource(name="db_slave_0")
public void insert()
{
List<User> users = userMapper.selectListBySQL();
for (User user:users
) {
user.setName(user.getName()+"_testInsert");
userMapper.insert(user);
}
}
在使用DynamicDataSourcePlugin并使用@DataSource注解的同时,开启了事务,如上代码所示,对于userMapper.selectListBySQL(),DynamicDataSourcePlugin和@DataSource都会选择从数据源,对于userMapper.insert(user),DynamicDataSourcePlugin选择主数据源,但实际上却都走了主数据源,这是因为开启了事务,事务优先级最高。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。