1.SpringBoot整合JDBCTemplate
1.1.导入jdbc相关依赖包
主要的依赖包:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--实现web页面接口调用--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
1.2.yaml配置数据源
application.yml用于连接jdbc数据库操作数据源配置,这里是最简化的配置:
spring: datasource: username: root password: admin #假如时区报错,增加时区配置serverTimezone=UTC,以及编码配置 url: jdbc:mysql://localhost:3306/mybatis02_0322?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver
实际开发过程中基本上会与Druid、C3P0整合,下面也给出了整合Druid数据源相关的配置,所以这里一并放上完整的application.yml配置:
spring: datasource: username: root password: admin #假如时区报错,增加时区配置serverTimezone=UTC url: jdbc:mysql://localhost:3306/mybatis02_0322?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #springboot 默认是不注入这些属性值的,需要自己绑定 #druid 数据源专有配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防止sql注入 #如果允许时报错:java.lang.ClassNotFoundException:org.apache.log4j.Priority #则导入 log4j 依赖即可,maven地址:https://mvnrepository.com/artifact/log4j/log4j filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
最后测试一下数据库连接访问是否成功:
@SpringBootTest class SpringbootDataApplicationTests { @Autowired private DataSource dataSource; @Test void testConnection() throws SQLException { System.out.println(dataSource.getClass()); Connection connection = dataSource.getConnection(); System.out.println(connection); } }
打印成功,显示获取到了数据源信息:
1.3.界面访问接口测试
@RestController public class JDBCController { @Autowired private JdbcTemplate jdbcTemplate; @RequestMapping("/queryList") public List<Map<String, Object>> query() { String sql = "select * from user"; List<Map<String, Object>> queryForList = jdbcTemplate.queryForList(sql); return queryForList; } @RequestMapping("/addUser") public String Ad<i>本文来源gaodai$ma#com搞$$代**码)网@</i>dUser(){ String sql = "insert into mybatis02_0322.user(id, username, password) values(4, '李磊', '654321')"; int update = jdbcTemplate.update(sql); return "AddUser Ok"; } @RequestMapping("/update/{id}") public String update(@PathVariable("id") Integer id){ String sql = "update mybatis02_0322.user set username = ?, password = ? where id = " + id; Object[] objects = new Object[2]; objects[0] = "测试哈哈哈111"; objects[1] = "32321"; int update = jdbcTemplate.update(sql, objects); return "updateUser Ok"; } @RequestMapping("/delete/{id}") public String delete(@PathVariable("id") Integer id){ String sql = "delete from mybatis02_0322.user where id = " + id; int update = jdbcTemplate.update(sql); return "delete Ok"; } }