java jdbc 注解_Spring Java 注解配置之 数据源配置

使用的数据源为:阿里的Druid数据源,mysql-connect版本是8.x.x,在查询上使用的是MyBatis,并配置了:PageHelper(分页拦截器)、通用Mapper。

需要配置jdbc.properties文件:

jdbc.driverClass=com.mysql.cj.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/schema?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=true

jdbc.username=root

jdbc.password=root

注:在使用mysql-connect 8.+以上版本的时候需要添加nullCatalogMeansCurrent=true参数,否则在使用mybatis-generator生成表对应的xml等时会扫描整个服务器里面的全部数据库中的表,而不是扫描对应数据库的表。

JAVA配置类:

@Configuration

@EnableTransactionManagement

@ComponentScan("cn.virens.database.serviceimpl")

public class SpringDataSourceConfig {

@Value("${jdbc.url}")

private String jdbcUrl;

@Value("${jdbc.username}")

private String jdbcUsername;

@Value("${jdbc.password}")

private String jdbcPassword;

@Value("${jdbc.driverClass}")

private String jdbcDriverClass;

/**

* mysql事务管理

*

* @return

*/

@Bean(name = "txManager")

public PlatformTransactionManager txManager(@Qualifier("druidDataSource") DruidDataSource druidDataSource) {

return new DataSourceTransactionManager(druidDataSource);

}

@Bean(name = "txExecute")

public TransactionExecute txExecute(@Qualifier("txManager") PlatformTransactionManager manager) {

return new TransactionExecute(manager);

}

/**

* MyBatis 数据连接地址池配置

*

* @throws IOException

* @throws SQLException

*/

@Bean(name = "druidDataSource", destroyMethod = "close")

public DruidDataSource druidDataSource(Environment env) throws SQLException {

DruidDataSource dataSource = new DruidDataSource();

dataSource.setUrl(jdbcUrl);

dataSource.setUsername(jdbcUsername);

dataSource.setPassword(jdbcPassword);

dataSource.setDriverClassName(jdbcDriverClass);

// 配置初始化大小、最小、最大

dataSource.setInitialSize(1);

dataSource.setMinIdle(1);

dataSource.setMaxActive(20);

dataSource.setMaxWait(60000);// 配置获取连接等待超时的时间

dataSource.setTimeBetweenEvictionRunsMillis(60000);// 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

dataSource.setMinEvictableIdleTimeMillis(300000);// 配置一个连接在池中最小生存的时间,单位是毫秒

dataSource.setDefaultAutoCommit(false);// 禁止自动提交,实现事务管理

dataSource.setValidationQuery("SELECT 1;");

dataSource.setValidationQueryTimeout(30000);

dataSource.setTestWhileIdle(true);

dataSource.setTestOnBorrow(false);

dataSource.setTestOnReturn(false);

dataSource.setPoolPreparedStatements(true);

dataSource.setMaxPoolPreparedStatementPerConnectionSize(50);

// 拦截配置

dataSource.setFilters("stat,wall");

return dataSource;

}

/**

* MyBatis配置 :配置sqlSessionFactory

*

* @return

* @throws Exception

*/

@Bean("sqlSessionFactoryBean")

public SqlSessionFactoryBean sqlSessionFactoryBean(DruidDataSource druidDataSource) throws Exception {

// 分页拦截器

PageInterceptor interceptor = new PageInterceptor();

Properties properties = new Properties();

properties.put("helperDialect", "mysql");

interceptor.setProperties(properties);

// 创建SqlSession工厂

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

sqlSessionFactoryBean.setDataSource(druidDataSource);

sqlSessionFactoryBean.setPlugins(new Interceptor[] { interceptor });

sqlSessionFactoryBean.setMapperLocations(ResourceUtil.getResources("classpath:mysql/**/*.xml"));

return sqlSessionFactoryBean;

}

@Bean

public static MapperScannerConfigurer mapperScannerConfigurer() {

MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();

mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");

mapperScannerConfigurer.setBasePackage("cn.virens.database.mysql.mapper");

mapperScannerConfigurer.getMapperHelper().getConfig().setIDENTITY("MYSQL");

mapperScannerConfigurer.getMapperHelper().getConfig().setStyle(Style.normal);

mapperScannerConfigurer.getMapperHelper().getConfig().setWrapKeyword("`{0}`");

return mapperScannerConfigurer;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是针对Spring框架开发的一种快速应用开发工具,其通过自动配置、简化配置的方式,让开发者可以更加方便地开发应用程序。而对于数据库多数据源配置Spring Boot同样提供了简单、高效的方式。 首先,需要在pom.xml文件中添加相关依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>2.7.8</version> </dependency> ``` 注:如果使用的是MySQL数据库,则需要添加mysql-connector-java依赖。 其次,需要在application.properties文件中配置数据源信息: ```properties # primary datasource spring.datasource.primary.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.primary.username=root spring.datasource.primary.password=root spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver # secondary datasource spring.datasource.secondary.url=jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.secondary.username=root spring.datasource.secondary.password=root spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver ``` 其中,primary和secondary为两个数据源的命名。 最后,在使用时,需要通过注解的方式指定使用哪个数据源,如下所示: ```java @Service public class UserServiceImpl implements UserService { @Autowired @Qualifier("primaryJdbcTemplate") private JdbcTemplate primaryJdbcTemplate; @Autowired @Qualifier("secondaryJdbcTemplate") private JdbcTemplate secondaryJdbcTemplate; @Override public void addUser(User user) { String sql = "INSERT INTO user (name, age) VALUES (?, ?)"; primaryJdbcTemplate.update(sql, user.getName(), user.getAge()); } @Override public void updateUser(User user) { String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?"; secondaryJdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId()); } // ... } ``` 在上述代码中,@Qualifier注解指定了使用primaryJdbcTemplate和secondaryJdbcTemplate,以实现对应数据源的操作。 至此,spring boot多数据源配置注解调用就完成了。相比于传统的多数据源配置,使用注解方式可以更加简洁、易用,方便快捷地实现不同数据源的切换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值