SpringBoot整合Mybatis之進門篇

        已經有好些日子沒有總結了,不是變懶了,而是我一直在奮力學習springboot的路上,如今也算是完成了第一階段的學習,今天給各位總結總結。css

       以前在網上找過很多關於springboot的教程,都是一些比較粗糙的文章,就連百度百科也是少的可憐,因此進度一直跟不上計劃。下面根據我這幾天的學習和摸索,談談我對spring和springboot的區別,以及不少業界人士說它的快速開發,究竟是快在哪兒,方便在哪兒?首先我認爲在項目的架構搭建方面變得極其利索,再也不須要像以前同樣整合ssh或ssm那樣進行一大堆的配置文件,他只是經過一個application入口類來配置全部的配置項,包括spring的一些默認配置項;其次springboot它沒有太多本身的特性,沒有徹底顛覆以前的開發模式,反而提供了更加便捷的方式來集成了原來的開發模式,只能說換了一種快速的方式來提升開發速度。java

        廢話我也很少說了,也說不了,後面我會把我這幾天的整合過程詳細給你們總結下來,初次接觸若有地方有誤的,望及時指正。mysql

項目結構詳解:

一、pom文件詳解

pom文件中各項依賴的做用見代碼註釋。git

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.zxz.boot</groupId>
    <artifactId>springboot_mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.4.RELEASE</version>
    </parent>
    
    <dependencies>
        <!--Spring Boot-->
        <!--支持 Web 應用開發,包含 Tomcat 和 spring-mvc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--支持使用 JDBC 訪問數據庫-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--添加適用於生產環境的功能,如性能指標和監測等功能。 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- springboot的熱部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <!--Mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <!--Mysql / DataSource-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.26</version>
        </dependency>
        <!--Json Support-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.43</version>
        </dependency>
        <!--Swagger support-->
        <dependency>
            <groupId>com.mangofactory</groupId>
            <artifactId>swagger-springmvc</artifactId>
            <version>0.9.5</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    
    <!-- 使用插件來運行springboot(運行springboot的方式有2種:main方法運行或使用下面的插件運行) -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
    <repositories>
        <repository>
            <id>spring-milestone</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestone</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>
View Code

 二、項目的入口類application.java詳解

先介紹一下在入口類中須要用到的經常使用註解:github

@SpringBootApplication:這是一個組合註解,聚合了多個註解的功能,包含:排除自啓動項、排除自啓動項的beanname、掃描包和掃描類。【建議瞜一眼源碼更好】web

@EnableAutoConfiguration:這個註解是用來啓動springboot中的自動配置項目,必須的加上,不然沒法正常使用springboot默認配置的配置項目。spring

@ComponentScan :掃描controller層和service層中全部類上的註解(這個註解能夠不加,由於組合註解@SpringBootApplication已經能夠掃描)。sql

@MapperScan("com.zxz.mapper") :管理mybatis中全部mapper接口的代理對象。數據庫

@EnableTransactionManagement(proxyTargetClass = true):開啓事務管理的註解。apache

 1 /**
 2  * 整個項目的入口
 3  */
 4 @SpringBootApplication        
 5 @EnableAutoConfiguration    
 6 @ComponentScan                
 7 @MapperScan("com.zxz.mapper")        
 8 @EnableTransactionManagement(proxyTargetClass = true)    
 9 public class Application {
10     
11     private  static Logger  logger = Logger.getLogger(Application.class);
12     //啓動類
13     public static void main(String[] args) {
14         SpringApplication.run(Application.class, args);
15         logger.info("======spring boot start success ===========");
16     }
17 }

       由於個人項目最後是須要和mybatis整合的,因此在該入口類中一定有一些數據源、每層包掃描和註解掃描、管理mybatis中mapper接口的代理對象和事務管理器等一些必要的配置項。還有經過我上面的項目結構發現,mybatis的sql文件是放置在了resources文件下,因此還得經過配置映射到相應的xml文件中去等等,這些事情都須要藉助該入口類來完成。

鏈接池配置:

       首先得配置好鏈接數據庫的一些參數,以前咱們是一般配置在某資源文件中,而後經過spring的配置文件進行加載到的,這裏咱們也須要將鏈接參數配置到SpringBoot規定的文件application.properties中,最後在入口類中經過註解加載便可。

application.properties配置內容:

1 server.port=8080
2 spring.datasource.url=jdbc:mysql://localhost:3306/zxz
3 spring.datasource.username=root
4 spring.datasource.password=123
5 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
6 logging.level.com.zxz.mapper=debug

       在入口類中經過註解加載:

1 @Bean
2 @ConfigurationProperties(prefix = "spring.datasource")    //做用:加載application.properties文件中的數據庫鏈接參數
3 public DataSource dataSource(){
4     return new DataSource();
5 }

       可是到這兒,可能不少哥們兒就有點說法了,如今大多數都是使用阿里的Druid數據源,由於性能好,可是在這裏配置並無指定數據源的具體類型,難道默認使用的是Druid,不是的,springboot還不至於這麼完美,目前它僅僅支持dbcp、dbcp二、hikari三種數據庫鏈接池。要是你就想要使用druid做爲項目中的數據源,那麼你就要費點兒力點開下面的代碼,只需將它們複製到你的入口類中便可:

 1 /**
 2      * 註冊DruidServlet
 3      * @return
 4      */
 5     @Bean
 6     public ServletRegistrationBean druidServletRegistrationBean() {
 7         ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
 8         servletRegistrationBean.setServlet(new StatViewServlet());
 9         servletRegistrationBean.addUrlMappings("/druid/*");
10         return servletRegistrationBean;
11     }
12     /**
13      * 註冊DruidFilter攔截
14      * @return
15      */
16     @Bean
17     public FilterRegistrationBean duridFilterRegistrationBean() {
18         FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
19         filterRegistrationBean.setFilter(new WebStatFilter());
20         Map<String, String> initParams = new HashMap<String, String>();
21         //設置忽略請求
22         initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
23         filterRegistrationBean.setInitParameters(initParams);
24         filterRegistrationBean.addUrlPatterns("/*");
25         return filterRegistrationBean;
26     }
27     /**
28      * 配置DruidDataSource
29      * @return
30      * @throws SQLException
31      */
32     @Bean
33     public DruidDataSource druidDataSource() throws SQLException {
34         DruidDataSource druidDataSource = new DruidDataSource();
35         druidDataSource.setUsername("root");
36         druidDataSource.setPassword("123");
37         druidDataSource.setUrl("jdbc:mysql://localhost:3306/zxz");
38         druidDataSource.setMaxActive(100);
39         druidDataSource.setFilters("stat,wall");
40         druidDataSource.setInitialSize(10);
41         return druidDataSource;
42     }
View Code

事務管理器配置:

1       //配置transactionManager
2       @Bean
3       public PlatformTransactionManager transactionManager() throws SQLException{
4           return new DataSourceTransactionManager(druidDataSource());
5       }

mybatis中mapper.xml文件的映射配置:

        由於是和mybatis的整合,免不了mapper.xml的加載和映射,springboot提供了專門的方式來加載它們。

 1    //提供sqlSession
 2     @Bean
 3     public SqlSessionFactory sqlSessionFactory(PageHelper pageHelper)throws Exception{
 4         SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
 5         sqlSessionFactoryBean.setDataSource(druidDataSource());
 6         sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageHelper});
 7         PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
 8         sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml"));
 9         return sqlSessionFactoryBean.getObject();
10     }

       若是上面最基本的各項配置都差很少了,你就能夠運行入口類中的偉大的main方法,看到以下界面沒有報錯信息則表示整合成功,各位儘可能寫個能訪問數據庫的業務邏輯來驗證整合結果,這裏由於時間問題我就不粘貼了:

 

       好了,到這兒我也快收工了,今天就總結到這兒吧,下次繼續給各位總結springboot整合mybatis的分頁插件pageHelper、springboot的熱部署和springboot的日誌加載等,與君共勉。

相關文章
相關標籤/搜索