<强>依赖强>
<代码> & 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