0%

搭建Spring boot + mybatis + freemarker项目

Spring boot是什么?

可以将Spring boot理解为spring项目的脚手架,它会默认配置我们引入的第三方依赖模块(jar),我们无需再用繁琐的xml配置,也可以快速搭建spring项目。Spring boot还内嵌了web容器(默认tomcat),服务器上不再需要单独安装tomcat,只需运行jar包即可。非常适合开发现在流行的微服务,拆分独立业务。

Spring boot优点

  1. 降低开发成本。大大简化了项目搭建时xml配置。
  2. 降低运维成本。内嵌了tomcat,不再需要运维再搭建tomcat.
下面我们step by step搭建Spring boot+mybatis+freemarker项目,大家可以参考下前面不用spring boot的文章,对比下我们节约了多少时间。基于Intelij Idea 2017.1。
  1. 创建项目。

    File-New-Project 选择Spring Initializr
    屏幕快照 2017-04-09 上午11.03.49

    Next,输入项目信息:

    屏幕快照 2017-04-09 上午11.06.39

    Next,选择需要的依赖:Web,Freemarker,Mybatis,Mysql

    Next,可以改也可以不改项目位置,Finish,创建出一个新项目.

  2. 配置项目
    虽然Spring boot可以帮我们处理大部分配置,但仍有一些是需要我们自己处理的,比如,数据库,mybatis的mapper位置.

    创建成功后,项目的结构是这样的

    所有配置都在SpringBootDemoApplication和application.properties里,没有各种复杂的xml,Freemarker的模板放在resources/templates.
    打开application.properties,配置服务器端口(默认8080)和数据库

    #服务器配置
    server.port=8000
    
    #数据库
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=
    

    打开SpringBootDemoApplication配置SqlSessionFactory:

    package com.pocketdigi;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    
    import javax.sql.DataSource;
    
    @SpringBootApplication
    @MapperScan("com.pocketdigi.dao.mapper")
    public class SpringBootDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootDemoApplication.class, args);
        }
    
        @Bean
        @Autowired
        public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    
            final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(dataSource);
            sqlSessionFactoryBean.setTypeAliasesPackage("com.pocketdigi.dao.po");
            PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
            sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources("classpath:mybatis_mapper/*.xml"));
            return sqlSessionFactoryBean.getObject();
    
        }
    }
    

    类上加上@MapperScan注解,增加创建 SqlSessionFactory的方法

    此时其实还没有com.pocketdigi.dao.mappercom.pocketdigi.dao.po包,这两个包是分别用来放mybatis generator生成的mapper接口文件和po,example类的,mybatis_mapper在resources目录下,放mybatis generator生成的mapper xml文件。请在生成后放到对应目录,怎么生成就不介绍了。

  3. 开始编写业务逻辑
    创建service,controller包,开始写业务逻辑吧
    完成时,整体项目结构大概是这样的:

    BeanConverter是一个将po转成model的工具类

  4. 运行
    正常情况下,intellij idea已经自动帮我们创建好了运行配置,只要点击工具栏上的运行按钮就可以了。

  5. 打包
    mvn package,在target目录生成spring-boot-demo-0.0.1-SNAPSHOT.jar,运行java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar即可启动服务