spring-boot之(10) datasource
前一章已经说过了使用spring-boot默认配置的数据源,现在来定制数据源。
- 首先回退之前的配置
在application.yml去掉下面的配置
# datasource: # url: jdbc:mysql://ip:port/database?useUnicode=true&characterEncoding=utf-8 # username: username # password: password # driver-class-name: com.mysql.jdbc.Driver
- 添加新的资源配置文件
url、username、password对应Datasource对应的属性
application: datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://ip:port/database?useUnicode=true&characterEncoding=utf-8 username: username password: password
- 用注解加载配置文件配置以及生成Datasource
使用@ConfigurationProperties注解和@Bean注解来生成数据源实例
@Component public class MyJdbcTemplate { private JdbcTemplate jdbcTemplate; @Bean @ConfigurationProperties("application.datasource") public DataSource getDatasource(){ //方法一 //return new org.apache.tomcat.jdbc.pool.DataSource(); //方法二 return DataSourceBuilder.create().build(); } @Autowired public void setJdbcTemplate(JdbcTemplate jdbcTemplate){ this.jdbcTemplate = jdbcTemplate; } public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } }
- 最后使用JdbcTemplate查询数据库打印查询数据
@Service public class SimpleUserDetailService implements UserDetailsService { @Autowired private MyJdbcTemplate myJdbcTemplate; @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { Map map = myJdbcTemplate.getJdbcTemplate().queryForMap("select * from sys_user where `account`='" + s + "'"); System.out.println(map.get("USERID")); return new User("root", "root"); } }
结果为
10000083778910
另:当存在多个数据源时,使用@Primary来设置某个数据源为spring-boot自动配置的数据源
- 参考资料
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-configure-a-datasource

浙公网安备 33010602011771号