轉-spring-boot 註解配置mybatis+druid(新手上路)-http://blog.csdn.net/sinat_36203615/article/details/53759935

 

spring-boot 註解配置mybatis+druid(新手上路)

轉載 2016年12月20日 10:17:17

spring-boot 註解配置mybatis+druid(新手上路)

驚訝驚訝驚訝

以前已經介紹了新手如何搭建一個簡單的springboot,接下來介紹一下springboot+mybatis+druid的配置方法。css

鄙人不才,參考了一些高手的博文以及官方文檔,整理出了一點心得。html

對高手的感謝無以言表,原文地址:http://blog.csdn.net/lxhjh/article/details/51764604java

http://blog.csdn.net/xiaoyu411502/article/details/51392237mysql

 

使用環境:JDK1.8 、eclipse-neon、maven3.5+、mysql5.5git

框架使用:springboot1.4.一、druid1.0.2六、mybatis自動獲取版本號web

介紹:我使用的配置文件格式爲application.properties,基本都是使用註解的方式搭建。spring

數據庫表結構,databases名爲mydatabases;代表爲city,字段有三個,分別是id、name、province,數據類型是varchar(20)。sql

第一步:數據庫

開始仍是新建springboot項目,而後導包。apache

新建maven項目,選擇jar包。

配置pom.xml文件。

 

[html]  view plain  copy
 
  1.  <properties>  
  2.     <java.version>1.8</java.version>  
  3.  </properties>  
  4.  <parent>  
  5.    <groupId>org.springframework.boot</groupId>  
  6.    <artifactId>spring-boot-starter-parent</artifactId>  
  7.    <version>1.4.1.RELEASE</version>  
  8.  </parent>  
  9.  <dependencies>  
  10.    <dependency>  
  11.        <groupId>org.springframework.boot</groupId>  
  12.        <artifactId>spring-boot-starter-web</artifactId>  
  13.    </dependency>  
  14.    <!-- druid數據庫鏈接池 -->  
  15.    <dependency>  
  16.        <groupId>com.alibaba</groupId>  
  17.        <artifactId>druid</artifactId>  
  18.        <version>1.0.26</version>  
  19. </dependency>  
  20. <!-- springboot的mybatis -->  
  21. <dependency>  
  22.        <groupId>org.mybatis.spring.boot</groupId>  
  23.        <artifactId>mybatis-spring-boot-starter</artifactId>  
  24.        <version>1.1.1</version>  
  25.    </dependency>  
  26.    <!-- MySql數據庫驅動 -->  
  27.    <dependency>  
  28.        <groupId>mysql</groupId>  
  29.        <artifactId>mysql-connector-java</artifactId>  
  30.    </dependency>  
  31.    <!-- Springboot 熱部署 -->  
  32.    <dependency>  
  33.        <groupId>org.springframework.boot</groupId>  
  34.        <artifactId>spring-boot-devtools</artifactId>  
  35.        <optional>true</optional>  
  36.    </dependency>  
  37.    </dependencies>  

 

第二步:

建立啓動類。

 

[java]  view plain  copy
 
  1. import org.mybatis.spring.annotation.MapperScan;  
  2. import org.springframework.boot.SpringApplication;  
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  4. import org.springframework.boot.web.servlet.ServletComponentScan;  
  5.   
  6. @SpringBootApplication  
  7. @ServletComponentScan   //掃描Servlet  
  8. @MapperScan("mapper")<span style="white-space:pre"> </span>//這裏mapper是你的mybatis的mapper目錄。  
  9. public class Application {  
  10.     public static void main(String[] args) {  
  11.         SpringApplication.run(Application.class, args);  
  12.     }  
  13. }  

 

第三步:

填寫配置文件。(這裏呀,參數比較多,能夠選擇填寫。)

我使用的是application.properties文件,該文件放在src/main/resources目錄下,springboot框架啓動後會自動讀取它。

 

[plain]  view plain  copy
 
  1. #數據庫設置  
  2. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource  
  3. spring.datasource.driverClassName=com.mysql.jdbc.Driver  
  4. spring.datasource.url=jdbc:mysql://localhost:3306/mydatabases  
  5. spring.datasource.username=root  
  6. spring.datasource.password=123  
  7. #--------------------------  
  8. # 下面爲鏈接池的補充設置,應用到上面全部數據源中  
  9. # 初始化大小,最小,最大  
  10. spring.datasource.initialSize=5  
  11. spring.datasource.minIdle=5  
  12. spring.datasource.maxActive=20  
  13. # 配置獲取鏈接等待超時的時間  
  14. spring.datasource.maxWait=60000  
  15. # 配置間隔多久才進行一次檢測,檢測須要關閉的空閒鏈接,單位是毫秒   
  16. spring.datasource.timeBetweenEvictionRunsMillis=60000  
  17. # 配置一個鏈接在池中最小生存的時間,單位是毫秒   
  18. spring.datasource.minEvictableIdleTimeMillis=300000  
  19. spring.datasource.validationQuery=SELECT 1 FROM DUAL  
  20. spring.datasource.testWhileIdle=true  
  21. spring.datasource.testOnBorrow=false  
  22. spring.datasource.testOnReturn=false  
  23. # 打開PSCache,而且指定每一個鏈接上PSCache的大小   
  24. spring.datasource.poolPreparedStatements=true  
  25. spring.datasource.maxPoolPreparedStatementPerConnectionSize=20  
  26. # 配置監控統計攔截的filters,去掉後監控界面sql沒法統計,'wall'用於防火牆   
  27. spring.datasource.filters=stat,wall,log4j  
  28. # 經過connectProperties屬性來打開mergeSql功能;慢SQL記錄  
  29. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000  
  30. # 合併多個DruidDataSource的監控數據  
  31. #spring.datasource.useGlobalDataSourceStat=true  

第四步:

 

配置數據源。這裏相關的參數會自動賦值到datasource裏。

 

[java]  view plain  copy
 
  1. import javax.sql.DataSource;  
  2. import org.springframework.boot.context.properties.ConfigurationProperties;  
  3. import org.springframework.context.annotation.Bean;  
  4. import org.springframework.context.annotation.Configuration;  
  5.   
  6. import com.alibaba.druid.pool.DruidDataSource;  
  7. @Configuration  
  8. public class DruidDataSourceConfiguration {  
  9.   
  10.     @Bean  
  11.     @ConfigurationProperties(prefix = "spring.datasource")  
  12.     public DataSource druidDataSource() {  
  13.         DruidDataSource druidDataSource = new DruidDataSource();  
  14.         return druidDataSource;  
  15.     }  
  16. }  

第五步:

 

寫一個實體類。這裏能夠隨意哈。

 

[java]  view plain  copy
 
  1. import java.io.Serializable;  
  2.   
  3. public class City implements Serializable{  
  4.     private static final long serialVersionUID = 1L;  
  5.     private String id;  
  6.     private String name;  
  7.     private String province;  
  8.     City(){  
  9.           
  10.     }  
  11.     public String getId() {  
  12.         return id;  
  13.     }  
  14.     public void setId(String id) {  
  15.         this.id = id;  
  16.     }  
  17.     public String getName() {  
  18.         return name;  
  19.     }  
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.     public String getProvince() {  
  24.         return province;  
  25.     }  
  26.     public void setProvince(String province) {  
  27.         this.province = province;  
  28.     }  
  29.     @Override  
  30.     public String toString() {  
  31.         return "City [id=" + id + ", name=" + name + ", province=" + province + "]";  
  32.     }  
  33.       
  34. }  

第六步:

 

寫mapper文件。這裏的包地址爲Application的MapperScan的值。

 

[java]  view plain  copy
 
  1. import org.apache.ibatis.annotations.Param;  
  2. import org.apache.ibatis.annotations.Select;  
  3.   
  4. public interface CityMapper {  
  5.       
  6.     @Select("select * from city where id = #{id}")  
  7.     City findCityById(@Param("id") String id);  
  8. }  

第七步:

 

這裏就不寫Service了,直接在Controller裏寫了。

 

[java]  view plain  copy
 
  1. import javax.annotation.Resource;  
  2.   
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import org.springframework.web.bind.annotation.RequestParam;  
  6. import org.springframework.web.bind.annotation.RestController;  
  7.   
  8. @RestController  
  9. @RequestMapping("/demo")  
  10. @EnableAutoConfiguration  
  11. public class HelloController {  
  12.     @Resource  
  13.     private CityMapper cityMapper;  
  14.     @RequestMapping("/test")  
  15.     String test1(){  
  16.         return "hello,test1()";  
  17.     }  
  18.     @RequestMapping("/findCity2")  
  19.     City findCity2(@RequestParam String id){  
  20.         return cityMapper.findCityById(id);  
  21.     }  
  22. }  

第八步:

 

這裏要寫filter,配合druid監控的使用。

 

[java]  view plain  copy
 
  1. import javax.servlet.annotation.WebFilter;  
  2. import javax.servlet.annotation.WebInitParam;  
  3.   
  4. import com.alibaba.druid.support.http.WebStatFilter;  
  5.   
  6. @WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",  
  7. initParams={  
  8.          @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略資源  
  9.  }  
  10. )  
  11. public class DruidStatFilter extends WebStatFilter{  
  12.   
  13. }  

 


第九步:

配置監控界面。

 

[java]  view plain  copy
 
  1. import com.alibaba.druid.support.http.StatViewServlet;  
  2. import javax.servlet.annotation.WebServlet;  
  3. import javax.servlet.annotation.WebInitParam;  
  4. @WebServlet(urlPatterns = "/druid/*",   
  5.     initParams={  
  6.             @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名單 (沒有配置或者爲空,則容許全部訪問)  
  7.             @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名單 (存在共同時,deny優先於allow)  
  8.             @WebInitParam(name="loginUsername",value="admin"),// 用戶名  
  9.             @WebInitParam(name="loginPassword",value="123"),// 密碼  
  10.             @WebInitParam(name="resetEnable",value="false")// 禁用HTML頁面上的「Reset All」功能  
  11.     })  
  12. public class DruidStatViewServlet extends StatViewServlet {  
  13.     private static final long serialVersionUID = 1L;  
  14.       
  15. }  

 

第十步:

啓動測試。在application.java中啓動,瀏覽器中先進入:localhost:8080/druid/login.html,輸入用戶名:admin,密碼:123,進入。

再執行一下localhost:8080/demo/findCity2?id=001,(你的數據)查看結果。這裏須要你的數據庫裏有數據。

在監控頁面看看sql監控是否被監控到。

附上源碼:點擊打開連接

 

肚子餓。。。

相關文章
相關標籤/搜索