idea快速创建springboot项目
1 新建springboot项目
新建项目:
修改一些信息:
接下来勾选springboot的web启动依赖:
首次进入项目,会下载很多包,耐心等待。
2 配置pom文件
- 在pom中添加以下相关包
<!--swagger相关包-->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!--支持页面的相关包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- Need this to compile JSP -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- MySQL连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 配置使用redis启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--邮箱相关包-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<!--跨域问题相关包-->
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>[ version ]</version>
</dependency>
- 在pom‘的build中加入:
<resources>
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
3 application.properties配置文件的配置
#配置tomcat端口,虚拟路径
server.port=8080
server.servlet.context-path=/secluxury
#配置redis端口,主机
spring.redis.port=6379
spring.redis.host=127.0.0.1
#配置图片服务器
IMAGE_DIR=E:\\images\\
IMAGE_URL=http://10.8.157.32:8081/images/
#配置mysql连接
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://10.8.157.32:3306/db_secluxury?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#前端控制器配置
spring.mvc.view.prefix=/pages/
spring.mvc.view.suffix=.jsp
#用来更改每次启动的banner图
#spring.banner.charset=UTF-8
#spring.banner.location=classpath:banner.txt
#加载路径下的文件
mybatis.type-aliases-package=com.nuoya.secluxury.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
4 写各个层controller,service层等等
controller层展示:
@CrossOrigin
@RestController
@RequestMapping(value = "goods",method = RequestMethod.POST)
public class GoodsController {
@Autowired
GoodsService goodsService;
@Autowired
private JedisClient jedisClient;
@RequestMapping(value = "searchgoods",method = RequestMethod.GET)
@ApiOperation("该方法用于查询所有的商品,包括模糊查询,条件查询")
public List<Goods> selectAllGoodsBy(HttpServletResponse response, HttpServletRequest request, @ApiParam(value = "关键词搜索,传入String类型",defaultValue = "dfsdfs") String keyWords, @ApiParam("按照种类搜索,传Integer类型的值")Integer typeId, @ApiParam("按品牌搜索,传品牌id,Integer类型") Integer brandId, @ApiParam("按价格分段查询,传入状态值(Integer类型1、2、3、4、5):价格范围:1:x<1000、2:1000<x<5000、3:5000<x<1W、4:1W<x<10W、5:10W<x") Integer priceStatus, @ApiParam("适用人群(Integer类型0、1、2)0:通用、1:男士、2:女士") Integer peopleType, @ApiParam("成色:95新则传int的95,9新传90,全新传值100") Integer goodsNew, @ApiParam("发布时间排序,传一个字符串createTime即可(前台应控制三个排序同时只能选一个!否则我后台的算法报错)") String createTime, @ApiParam("价格升序,传一个字符串priceAsc即可(前台应控制三个排序同时只能选一个!否则我后台的算法报错)") String priceAsc, @ApiParam("价格降序,传一个字符串priceDesc即可(前台应控制三个排序同时只能选一个!否则我后台的算法报错)") String priceDesc) {
response.setHeader("Access-Control-Allow-Origin", "*");
Map<String,Object> map = new HashMap<String,Object>();
map.put("keyWords",keyWords);
map.put("typeId",typeId);
map.put("brandId",brandId);
map.put("priceStatus",priceStatus);
map.put("peopleType",peopleType);
map.put("goodsNew",goodsNew);
map.put("createTime",createTime);
map.put("priceAsc",priceAsc);
map.put("priceDesc",priceDesc);
System.out.println(map);
List<Goods> goodsList = goodsService.selectAllGoodsBy(map);
System.out.println(goodsList);
return goodsList;
}
}
- 其中的
@CrossOrigin
和
response.setHeader("Access-Control-Allow-Origin", "*");
联合pom最后的一个包,用于解决跨域访问不到的问题!
- 其次,
@ApiOperation("该方法用于查询所有的商品,包括模糊查询,条件查询")
是写在每个方法(接口)上的,他是swagger2的用法,用于解释该方法的用途,用法;方法的每个参数前可以加
@ApiParam(value = "关键词搜索,传入String类型",defaultValue = "dfsdfs")
用于解释每个参数的用法,类型等等说明
关于Swagger2详细的请参考我的这篇文章:暂留链接位置,以后补充 19.7.20
mapper.xml层展示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nuoya.secluxury.mapper.GoodsMapper">
<select id="selectAllBrand" resultType="Brand">
select * from goods_brand
</select>
</mapper>
5 如果用到了jsp或者html页面
file——>
确认第五步添加webxml时路径是src\main\webappWEB-INF\web.xml
6 过程中遇到的错误
- 注意mapper层的类上加
@Mapper
,如果不行
需要加@Component
service层的实现类impl加@Service