SpringBoot整合JDBC、Druid數(shù)據(jù)源的示例代碼
1.SpringBoot整合JDBCTemplate
1.1.導(dǎo)入jdbc相關(guān)依賴包
主要的依賴包:
<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> <!--實(shí)現(xiàn)web頁面接口調(diào)用--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
1.2.yaml配置數(shù)據(jù)源
application.yml用于連接jdbc數(shù)據(jù)庫操作數(shù)據(jù)源配置,這里是最簡化的配置:
spring: datasource: username: root password: admin #假如時(shí)區(qū)報(bào)錯(cuò),增加時(shí)區(qū)配置serverTimezone=UTC,以及編碼配置 url: jdbc:mysql://localhost:3306/mybatis02_0322?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver
實(shí)際開發(fā)過程中基本上會(huì)與Druid、C3P0整合,下面也給出了整合Druid數(shù)據(jù)源相關(guān)的配置,所以這里一并放上完整的application.yml配置:
spring: datasource: username: root password: admin #假如時(shí)區(qū)報(bào)錯(cuò),增加時(shí)區(qū)配置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 默認(rèn)是不注入這些屬性值的,需要自己綁定 #druid 數(shù)據(jù)源專有配置 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 #配置監(jiān)控統(tǒng)計(jì)攔截的filters,stat:監(jiān)控統(tǒng)計(jì)、log4j:日志記錄、wall:防止sql注入 #如果允許時(shí)報(bào)錯(cuò):java.lang.ClassNotFoundException:org.apache.log4j.Priority #則導(dǎo)入 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
最后測試一下數(shù)據(jù)庫連接訪問是否成功:
@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); } }
打印成功,顯示獲取到了數(shù)據(jù)源信息:
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 AddUser(){ 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"; } }
這里對(duì)應(yīng)接口請(qǐng)求頁面進(jìn)行請(qǐng)求測試即可,后臺(tái)數(shù)據(jù)庫層面進(jìn)行驗(yàn)證,比較簡單,這里就不一一細(xì)說,對(duì)應(yīng)可以去看我的源碼。
2.SpringBoot整合DruidDataSource
2.1.Druid簡介
Druid是阿里巴巴開源平臺(tái)上一個(gè)數(shù)據(jù)庫連接池實(shí)現(xiàn),它結(jié)合了C3P0、DBCP、PROXOOL等DB池的優(yōu)秀實(shí)踐,同時(shí)加入了日志監(jiān)控。
Druid可以很好地監(jiān)控DB池連接和Sql的執(zhí)行情況,是天生針對(duì)監(jiān)控的DB連接池。
SpringBoot2.0以上默認(rèn)使用Hikari數(shù)據(jù)源,可以說HiKari和Druid都是當(dāng)前Java Web上開源的優(yōu)秀數(shù)據(jù)源。
2.2.導(dǎo)入Druid相關(guān)依賴
對(duì)應(yīng)pom.xml文件:
<!--整合alibaba druid數(shù)據(jù)源--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.3</version> </dependency> <!--導(dǎo)入log4j日志包--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
2.3.配置Druid并使用監(jiān)控頁面
①編寫DruidConfig類,啟用后臺(tái)監(jiān)控功能Bean以及過濾器Bean:
@Configuration public class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource(){ return new DruidDataSource(); } //后臺(tái)監(jiān)控功能 @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); //后臺(tái)需要有人登陸,賬號(hào)密碼配置 HashMap<String, String> initParameters = new HashMap<>(); initParameters.put("loginUsername", "admin"); //登陸key,是固定的 loginUsername loginPassword initParameters.put("loginPassword", "123456"); //允許誰可以訪問 initParameters.put("allow", ""); //禁止誰可以訪問 initParameters.put("fengye", "192.168.1.10"); bean.setInitParameters(initParameters); //設(shè)置初始化參數(shù) return bean; } //過濾器 @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>(); bean.setFilter(new WebStatFilter()); HashMap<String, String> initParameters = new HashMap<>(); //這些不進(jìn)行統(tǒng)計(jì) initParameters.put("exclusions", "*.js,*.css,/druid/*"); bean.setInitParameters(initParameters); return bean; } }
②啟動(dòng)頁面訪問Druid并測試請(qǐng)求訪問sql:
本博客寫作參考文檔相關(guān):
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter
https://www.yuque.com/atguigu/springboot/aob431#wtNk1
Spring Boot 2 學(xué)習(xí)筆記(上):https://blog.csdn.net/u011863024/article/details/113667634
Spring Boot 2 學(xué)習(xí)筆記(下):
https://blog.csdn.net/u011863024/article/details/113667946
示例代碼已上傳至Github地址:
https://github.com/devyf/SpringBoot_Study
到此這篇關(guān)于SpringBoot整合JDBC、Druid數(shù)據(jù)源的文章就介紹到這了,更多相關(guān)SpringBoot整合JDBC、Druid數(shù)據(jù)源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java String類簡單用法實(shí)戰(zhàn)示例【字符串輸出、比較】
這篇文章主要介紹了Java String類簡單用法,結(jié)合具體實(shí)例形式分析了Java使用String類實(shí)現(xiàn)字符串的輸出和比較功能相關(guān)操作技巧,需要的朋友可以參考下2019-07-07java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list
這篇文章主要介紹了java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12Java利用Dijkstra和Floyd分別求取圖的最短路徑
本文主要介紹了圖的最短路徑的概念,并分別利用Dijkstra算法和Floyd算法求取最短路徑,最后提供了基于鄰接矩陣和鄰接表的圖對(duì)兩種算法的Java實(shí)現(xiàn)。需要的可以參考一下2022-01-01關(guān)于Java單個(gè)TCP(Socket)連接發(fā)送多個(gè)文件的問題
這篇文章主要介紹了關(guān)于Java單個(gè)TCP(Socket)連接發(fā)送多個(gè)文件的問題,每次我只能使用一個(gè) Socket 發(fā)送一個(gè)文件,沒有辦法做到連續(xù)發(fā)送文件,本文來解決這個(gè)問題,需要的朋友可以參考下2023-04-04阿里面試Nacos配置中心交互模型是push還是pull原理解析
這篇文章主要為大家介紹了阿里面試Nacos配置中心交互模型是push還是pull原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07JWT在OpenFeign調(diào)用中進(jìn)行令牌中繼詳解
Feign是一個(gè)聲明式的Web Service客戶端,是一種聲明式、模板化的HTTP客戶端。而OpenFeign是Spring Cloud 在Feign的基礎(chǔ)上支持了Spring MVC的注解,如@RequesMapping等等,這篇文章主要給大家介紹了關(guān)于JWT在OpenFeign調(diào)用中進(jìn)行令牌中繼的相關(guān)資料,需要的朋友可以參考下2021-10-10