[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)

一、 创建spring-boot项目

前置条件

idea
java环境
tomcat (解决坑用)
mysql

使用官方初始化工具

1、直接使用默认default,也可以搭建私服模板

[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第1张图片

2、 使用选择gradle,其他可以保持默认

[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第2张图片
image.png

3、 勾选依赖


[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第3张图片
image.png
[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第4张图片
image.png

4、配置好路径,Finish

[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第5张图片
image.png

5、 选择图上两项,自动创建一些目录,以及使用默认gradle wrapper

[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第6张图片
image.png

6、 如果网速好,此处可以无视,安装时候卡在下载gradle这一步

image.png
解决方法

1、手动下载对应版本gradle,放到tomcat目录里面 webapps\ROOT,启动tomcat
2、找到gradle-wrapper.properties文件,修改到本地路径

[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第7张图片
image.png

3、重启idea,右侧边栏出现Gradle图标,说明安装成功了
[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第8张图片
image.png

7、点刷新按钮下载依赖,如果下载不了,可以替换maven仓库


[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第9张图片
image.png
[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第10张图片
image.png

8、到此位置,依赖环境搭建完成,可以愉快的写代码了 —— so easy,妈妈再也......

二、使用Mybatis+MVC

1、数据库建表及填充数据


image.png

2、 建立如下目录结构 —— 推荐这种目录结构,毕竟官方包也是这么玩的


[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第11张图片
image.png

controller – Controller 层
dao – 数据操作层 DAO
domain – 实体类
mapper – 注解方式的配置文件
service – 业务逻辑层
Application – 应用启动类

3、编写domain、dao、application、service、controller文件

domian/City.java

package com.example.domain;

import java.io.Serializable;

/**
 * Created by user on 2017/5/5.
 */
public class City implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long id;
    private String name;
    private String state;
    private String country;

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getState() {
        return this.state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getCountry() {
        return this.country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return getId() + "," + getName() + "," + getState() + "," + getCountry();
    }

}

dao/CityDao.java

package com.example.dao;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Component;
import com.example.domain.City;

import javax.annotation.Resource;

/**
 * Created by user on 2017/5/5.
 */
@Component
public class CityDao {

    @Resource
    private  SqlSession sqlSession;

    public City selectCityById(long id) {
        return sqlSession.selectOne("selectCityById", id);
    }
}

service/CityService.java

package com.example.service;


import com.example.domain.City;
import com.example.dao.CityDao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Created by user on 2017/5/5.
 */
@Service
public class CityService {

    @Autowired
    private CityDao cityDao;

    public City selectCityById(int id){
        return cityDao.selectCityById(id);
    }
}

controller/DemoController.java

package com.example.controller;

import com.example.domain.City;
import com.example.service.CityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by user on 2017/5/5.
 */
@Controller
public class DemoController {

    @Autowired
    private CityService cityService;

    @RequestMapping("/")
    @ResponseBody
    public City index() {
        return cityService.selectCityById(1);
    }
}

DemoApplication.java

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

4、mapper我采取配置的方式,因为以后可以用工具生成 [捂脸]

image.png




    

5、在application.properties配置数据源

我用mysql5.7需要带上useSSL防止报warn

spring.datasource.url = jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true
spring.datasource.username = work
spring.datasource.password = 123456

mybatis.config-location=classpath:mybatis-config.xml

6、 配置mybatis-config.xml,mapper文件在这里指定路径





    
        
    
    
        
    

三、Run起来

点这个


[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第12张图片
image.png

卧槽......


image.png

加依赖
[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第13张图片
image.png

刷新再run,用自带的工具测试,Tools -> Test RESTful Web Service(这个碉堡,省了postman)


[Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA)_第14张图片
image.png

完美!!!!

四、小节

  1. 构建工具使用了Gradle,扩展性强,可以满足项目后期需要。
  2. 整个构建基于最新的组件搭建,选用Spring-Boot,Spring-MVC 和
    Mybatis 也是使用starter来构建完成,基本实现了开箱即用,随官方更新迭代风险小
  3. 代码及目录结构采取规范形式,方便后续扩展,大型项目,在example下一级增加子项目目录即可划分工程。
  4. mybatis采取xml配置形式,可以利用现有mybatsi-generator工具进行代码生成,方便后续开发
  5. 使用@autowired 和 @Resource 方式自动注入,充分利用了框架的简化优势,开发更容易

后记:新手第一次搭建这套开发环境,踩了好多坑,陆陆续续搞了两天,记录过程防止遗忘,也希望对同行新手有帮助~

你可能感兴趣的:([Spring从零单排-1] Spring-boot + MVC+Mybatis环境搭建 (Gradle+IDEA))