弹簧引导刀之jdbcTemplate

  

<强>依赖

  
 <代码> & lt; dependency>
  & lt; groupId> org.springframework.boot
  & lt; artifactId> spring-boot-starter-data-jpa
  & lt;/dependency>
  
  & lt; dependency>
  & lt; groupId> mysql
  & lt; artifactId> mysql-connector-java
  & lt;/dependency>  
  

<强> application-database.properties

  
 <代码> #初始化数据库的时候,如果错误,是否继续启动。
  spring.datasource.continue-on-error=false
  # jdbc驱动程序。默认通过uri来自动检测。
  spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  # jdbc url。连接数据库的uri
  spring.datasource.url=jdbc: mysql://172.28.1.227:3310/fc ? useUnicode=true& autoReconnect=true& characterEncoding=utf8& zeroDateTimeBehavior=convertToNull& useServerPrepStmts=false
  #数据库连接用户名
  spring.datasource.username=fcdev
  #数据连接密码
  spring.datasource.password=123456
  #全限定名,连接池。默认自动检测类路径中
  spring.datasource.type=com.zaxxer.hikari.HikariDataSource
  # sql脚本字符
  spring.datasource.sql-script-encoding=utf - 8
  
  # jdbcTemplate配置参数
  spring.jdbc.template.fetch-size=1
  spring.jdbc.template.max-rows=1
  spring.jdbc.template.query-timeout=60  
  

<>强源码-JdbcProperties

  
 <代码> @ConfigurationProperties(前缀=皊pring.jdbc”)
  公开课JdbcProperties {
  
  私人最终模板模板=新模板();
  
  公共模板getTemplate () {
  返回this.template;
  }/* *
  * {@code JdbcTemplate}设置。
  */公共静态类模板{/* *
  *的行数时,应该从数据库中获取更多的行
  *需要的。使用1使用JDBC驱动程序的默认配置。
  */私人int fetchSize=1;/* *
  *最大的行数。使用1使用JDBC驱动程序的默认配置。
  */私人int maxRows=1;/* *
  *查询超时。默认情况下,使用JDBC驱动程序的默认配置。如果一个
  *时间没有指定后缀,秒就会被使用。
  */@DurationUnit (ChronoUnit.SECONDS)
  私人时间queryTimeout;
  
  }
  } 
  

<>强源码-JdbcTemplateAutoConfiguration

  
 <代码> @ configuration
  @ConditionalOnClass({数据源。类,JdbcTemplate。类})
  @ConditionalOnSingleCandidate (DataSource.class)
  @AutoConfigureAfter (DataSourceAutoConfiguration.class)
  @EnableConfigurationProperties (JdbcProperties.class)
  公开课JdbcTemplateAutoConfiguration {
  
  @ configuration
  静态类JdbcTemplateConfiguration {
  
  私人最终数据源的数据源;
  
  私人最终JdbcProperties属性;
  
  JdbcTemplateConfiguration(数据源的数据源,JdbcProperties属性){
  这一点。数据源=数据源;
  这一点。=属性;
  }
  
  @ bean
  @Primary
  @ConditionalOnMissingBean (JdbcOperations.class)
  公共JdbcTemplate JdbcTemplate () {
  JdbcTemplate JdbcTemplate=new JdbcTemplate (this.dataSource);
  JdbcProperties。模板模板=this.properties.getTemplate ();
  jdbcTemplate.setFetchSize (template.getFetchSize ());
  jdbcTemplate.setMaxRows (template.getMaxRows ());
  如果(template.getQueryTimeout () !=null) {
  jdbcTemplate
  .getSeconds .setQueryTimeout ((int) template.getQueryTimeout () ());
  }
  返回jdbcTemplate;
  }
  
  }
  
  @ configuration
  @ import (JdbcTemplateConfiguration.class)
  静态类NamedParameterJdbcTemplateConfiguration {
  
  @ bean
  @Primary
  @ConditionalOnSingleCandidate (JdbcTemplate.class)
  @ConditionalOnMissingBean (NamedParameterJdbcOperations.class)
  公共NamedParameterJdbcTemplate NamedParameterJdbcTemplate (
  JdbcTemplate JdbcTemplate) {
  返回新NamedParameterJdbcTemplate (jdbcTemplate);
  }
  
  }
  
  }
   
  

<强> jdbcTemplate使用

  
 @ <代码>
  公开课TestJdbcDao {
  @ autowired
  私人JdbcTemplate JdbcTemplate;
  
  公共字符串getMenuNameById (int id) {
  jdbcTemplate返回。queryForObject(“选择名称从t_sys_menu id=?”,新对象[]{id}, String.class);
  }
  } 
  

<强> jdbcTemplate测试

  
 <代码> @RunWith (SpringRunner.class)
  @SpringBootTest
  公开课AppContextTest {
  
  @ autowired
  私人TestJdbcDao TestJdbcDao;
  
  @Test
  公共空间jdbcTest () {
  字符串menuName=testJdbcDao.getMenuNameById (1);
  system . out。println (“menuName=" + menuName);
  }

弹簧引导刀之jdbcTemplate