diff --git a/README.md b/README.md index 7d0ad43..b6ed1eb 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ springboot 版本 1.5.1.RELEASE ##### b. Web 开发相关 - springboot-mybatis
[《Springboot 整合 Mybatis 的完整 Web 案例》](http://www.bysocket.com/?p=1610 "Springboot 整合 Mybatis 的完整 Web 案例")
-- springboot-restful-json
-Springboot 实现 Restful 服务,基于 HTTP / JSON 传输 +- springboot-restful
+Spsringboot 实现 Restful 服务,基于 HTTP / JSON 传输 ## 二、项目 Quick Start 快速开发指南 #### a. 基本环境配置 diff --git a/pom.xml b/pom.xml index e52d442..1295e05 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ springboot-helloworld springboot-mybatis + springboot-restful \ No newline at end of file diff --git a/springboot-mybatis/src/main/resources/application.properties b/springboot-mybatis/src/main/resources/application.properties index c72309a..3cefff1 100644 --- a/springboot-mybatis/src/main/resources/application.properties +++ b/springboot-mybatis/src/main/resources/application.properties @@ -1,7 +1,7 @@ ## 数据源配置 -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdb?useUnicode=true&characterEncoding=utf8 +spring.datasource.url=jdbc:mysql://139.224.14.39:3306/springbootdb?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root -spring.datasource.password=123456 +spring.datasource.password=Hello123!@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver ## Mybatis 配置 diff --git a/springboot-restful/pom.xml b/springboot-restful/pom.xml new file mode 100755 index 0000000..5bfce9e --- /dev/null +++ b/springboot-restful/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + springboot + springboot-restful + 0.0.1-SNAPSHOT + springboot-restful :: Spsringboot 实现 Restful 服务,基于 HTTP / JSON 传输 Demo + + + + org.springframework.boot + spring-boot-starter-parent + 1.5.1.RELEASE + + + + 1.2.0 + 5.1.39 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + ${mybatis-spring-boot} + + + + + mysql + mysql-connector-java + ${mysql-connector} + + + + + junit + junit + 4.12 + + + diff --git a/springboot-restful/src/main/java/org/spring/springboot/Application.java b/springboot-restful/src/main/java/org/spring/springboot/Application.java new file mode 100644 index 0000000..79807ed --- /dev/null +++ b/springboot-restful/src/main/java/org/spring/springboot/Application.java @@ -0,0 +1,26 @@ +package org.spring.springboot; + +import org.mybatis.spring.annotation.MapperScan; +import org.spring.springboot.dao.CityDao; +import org.spring.springboot.domain.City; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * Spring Boot 应用启动类 + * + * Created by bysocket on 16/4/26. + */ +// Spring Boot 应用的标识 +@SpringBootApplication +// mapper 接口类扫描包配置 +@MapperScan("org.spring.springboot.dao") +public class Application { + + public static void main(String[] args) { + // 程序启动入口 + // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 + SpringApplication.run(Application.class,args); + } +} diff --git a/springboot-restful/src/main/java/org/spring/springboot/controller/CityRestController.java b/springboot-restful/src/main/java/org/spring/springboot/controller/CityRestController.java new file mode 100644 index 0000000..fe829c9 --- /dev/null +++ b/springboot-restful/src/main/java/org/spring/springboot/controller/CityRestController.java @@ -0,0 +1,46 @@ +package org.spring.springboot.controller; + +import org.spring.springboot.domain.City; +import org.spring.springboot.service.CityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 城市 Controller 实现 Restful HTTP 服务 + * + * Created by bysocket on 07/02/2017. + */ +@RestController +public class CityRestController { + + @Autowired + private CityService cityService; + + @RequestMapping(value = "/api/city/{id}", method = RequestMethod.GET) + public City findOneCity(@PathVariable("id") Long id) { + return cityService.findCityById(id); + } + + @RequestMapping(value = "/api/city", method = RequestMethod.GET) + public List findAllCity() { + return cityService.findAllCity(); + } + + @RequestMapping(value = "/api/city", method = RequestMethod.POST) + public void createCity(@RequestBody City city) { + cityService.saveCity(city); + } + + @RequestMapping(value = "/api/city", method = RequestMethod.PUT) + public void modifyCity(@RequestBody City city) { + cityService.updateCity(city); + } + + @RequestMapping(value = "/api/city/{id}", method = RequestMethod.DELETE) + public void modifyCity(@PathVariable("id") Long id) { + cityService.deleteCity(id); + } +} diff --git a/springboot-restful/src/main/java/org/spring/springboot/dao/CityDao.java b/springboot-restful/src/main/java/org/spring/springboot/dao/CityDao.java new file mode 100644 index 0000000..22f2654 --- /dev/null +++ b/springboot-restful/src/main/java/org/spring/springboot/dao/CityDao.java @@ -0,0 +1,35 @@ +package org.spring.springboot.dao; + +import org.apache.ibatis.annotations.Param; +import org.spring.springboot.domain.City; + +import java.util.List; + +/** + * 城市 DAO 接口类 + * + * Created by bysocket on 07/02/2017. + */ +public interface CityDao { + + /** + * 获取城市信息列表 + * + * @return + */ + List findAllCity(); + + /** + * 根据城市 ID,获取城市信息 + * + * @param id + * @return + */ + City findById(@Param("id") Long id); + + Long saveCity(City city); + + Long updateCity(City city); + + Long deleteCity(Long id); +} diff --git a/springboot-restful/src/main/java/org/spring/springboot/domain/City.java b/springboot-restful/src/main/java/org/spring/springboot/domain/City.java new file mode 100644 index 0000000..556709c --- /dev/null +++ b/springboot-restful/src/main/java/org/spring/springboot/domain/City.java @@ -0,0 +1,61 @@ +package org.spring.springboot.domain; + +/** + * 城市实体类 + * + * Created by bysocket on 07/02/2017. + */ +public class City { + + /** + * 城市编号 + */ + private Long id; + + /** + * 省份编号 + */ + private Long provinceId; + + /** + * 城市名称 + */ + private String cityName; + + /** + * 描述 + */ + private String description; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getProvinceId() { + return provinceId; + } + + public void setProvinceId(Long provinceId) { + this.provinceId = provinceId; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/springboot-restful/src/main/java/org/spring/springboot/service/CityService.java b/springboot-restful/src/main/java/org/spring/springboot/service/CityService.java new file mode 100644 index 0000000..b97ba1e --- /dev/null +++ b/springboot-restful/src/main/java/org/spring/springboot/service/CityService.java @@ -0,0 +1,52 @@ +package org.spring.springboot.service; + +import org.spring.springboot.domain.City; + +import java.util.List; + +/** + * 城市业务逻辑接口类 + * + * Created by bysocket on 07/02/2017. + */ +public interface CityService { + + /** + * 获取城市信息列表 + * + * @return + */ + List findAllCity(); + + /** + * 根据城市 ID,查询城市信息 + * + * @param id + * @return + */ + City findCityById(Long id); + + /** + * 新增城市信息 + * + * @param city + * @return + */ + Long saveCity(City city); + + /** + * 更新城市信息 + * + * @param city + * @return + */ + Long updateCity(City city); + + /** + * 根据城市 ID,删除城市信息 + * + * @param id + * @return + */ + Long deleteCity(Long id); +} diff --git a/springboot-restful/src/main/java/org/spring/springboot/service/impl/CityServiceImpl.java b/springboot-restful/src/main/java/org/spring/springboot/service/impl/CityServiceImpl.java new file mode 100644 index 0000000..8140ecf --- /dev/null +++ b/springboot-restful/src/main/java/org/spring/springboot/service/impl/CityServiceImpl.java @@ -0,0 +1,45 @@ +package org.spring.springboot.service.impl; + +import org.spring.springboot.dao.CityDao; +import org.spring.springboot.domain.City; +import org.spring.springboot.service.CityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 城市业务逻辑实现类 + * + * Created by bysocket on 07/02/2017. + */ +@Service +public class CityServiceImpl implements CityService { + + @Autowired + private CityDao cityDao; + + public List findAllCity(){ + return cityDao.findAllCity(); + } + + public City findCityById(Long id) { + return cityDao.findById(id); + } + + @Override + public Long saveCity(City city) { + return cityDao.saveCity(city); + } + + @Override + public Long updateCity(City city) { + return cityDao.updateCity(city); + } + + @Override + public Long deleteCity(Long id) { + return cityDao.deleteCity(id); + } + +} diff --git a/springboot-restful/src/main/resources/application.properties b/springboot-restful/src/main/resources/application.properties new file mode 100644 index 0000000..3cefff1 --- /dev/null +++ b/springboot-restful/src/main/resources/application.properties @@ -0,0 +1,9 @@ +## 数据源配置 +spring.datasource.url=jdbc:mysql://139.224.14.39:3306/springbootdb?useUnicode=true&characterEncoding=utf8 +spring.datasource.username=root +spring.datasource.password=Hello123!@ +spring.datasource.driver-class-name=com.mysql.jdbc.Driver + +## Mybatis 配置 +mybatis.typeAliasesPackage=org.spring.springboot.domain +mybatis.mapperLocations=classpath:mapper/*.xml \ No newline at end of file diff --git a/springboot-restful/src/main/resources/mapper/CityMapper.xml b/springboot-restful/src/main/resources/mapper/CityMapper.xml new file mode 100644 index 0000000..1855f82 --- /dev/null +++ b/springboot-restful/src/main/resources/mapper/CityMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + id, province_id, city_name, description + + + + + + + + insert into + city(id,province_id,city_name,description) + values + (#{id},#{provinceId},#{cityName},#{description}) + + + + update + city + set + + province_id = #{provinceId}, + + + city_name = #{cityName}, + + + description = #{description} + + where + id = #{id} + + + + delete from + city + where + id = #{id} + +