文件路径
添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<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>wonder</groupId>
<artifactId>skyRainbow</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <dependencies> <!--spring boot 的依赖 START-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring boot 的依赖 END--> <!--mybatis 的依赖 START-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!--mybatis 的依赖 END--> <!--mysql 的依赖 START-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mysql 的依赖 END--> <!--jsp 的依赖 START-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--jsp 的依赖 END--> <!--swagger 的依赖 START-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency> <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<!--swagger 的依赖 END--> </dependencies> <build>
<!--配置文件读取路径-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources> <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
添加spring boot 启动文件
package lf; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource; @SpringBootApplication
@MapperScan("lf.mapper") // mapper层的路径
@PropertySource({"classpath:mybatis.properties",
"classpath:datasource.properties"})// 读取.properties 文件路径
public class SkyRainbowApplication { public static void main(String[] args) {
/**
* Spring boot 程序入口
*/
SpringApplication.run(SkyRainbowApplication.class,args);
}
}
添加swagger 启动文件
package lf.config; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex; @Configuration
@EnableSwagger2
public class SwaggerConfig { @Bean
public Docket api_lf(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("api_lf")
.genericModelSubstitutes(DeferredResult.class)
.useDefaultResponseMessages(false)
.forCodeGeneration(false)
.pathMapping("/")
.select()
.paths(or(regex("/lf/.*")))
.build()
.apiInfo(apiInfo()); } /**
* 构建api文档详细信息
*/
private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo(
"甘雨路 API",// 标题
"API 描述说明",//描述
"1.0",//版本
"NO terms of service",
"lf@qq.com",// 创建人
"The Apache License, Version 2.0",
"http://www.apache.org/licenses/LICENSE-2.0.html"
);
return apiInfo;
} }
添加控制层
package lf.controller; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import lf.entity.BsdUser;
import lf.service.BsdUserSerive;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource;
import java.util.Date; @Controller
@RequestMapping(value="${modulePath}/page")
@Api(description = "页面跳转控制器")
public class PageController {
@Resource
private BsdUserSerive userSerive;
/**
* 进入公司主页
*/
@RequestMapping(value = "/company",method = RequestMethod.GET)
public String gotoCompanyPage(Model model,@RequestParam @ApiParam("用户id") Long id){
BsdUser user = userSerive.getUserById(id);
model.addAttribute("time",new Date());
model.addAttribute("loginName",user.getName());
return "main";
} }
package lf.controller; import io.swagger.annotations.*;
import lf.entity.BsdUser;
import lf.entity.utils.CommonDTO;
import lf.service.BsdUserSerive;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; @Api(description = "用户控制器")//swagger注解用于类
@Controller // 控制器注解
@RequestMapping(value="${modulePath}/user")
public class UserController { @Resource
private BsdUserSerive userSerive; @ResponseBody
@RequestMapping(value = "/info",method = RequestMethod.GET)
public CommonDTO<BsdUser> getUserbyId(@RequestParam @ApiParam("用户id") Long id){
CommonDTO<BsdUser> detailDTO = new CommonDTO<>(0,1);
try {
BsdUser user = userSerive.getUserById(id);
detailDTO.setData(user);
} catch (Exception e) {
e.printStackTrace();
detailDTO.setStatus(1);
detailDTO.setCode(400);
detailDTO.setMsg("获取用户信息异常:"+e.getMessage()); } return detailDTO;
} }
添加实体类
package lf.entity.utils; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import java.util.Map; @ApiModel(description = "详情DTO")
public class CommonDTO<T>{ @ApiModelProperty(value = "提示信息")
private String msg; @ApiModelProperty(value = "0 代表无错误 1代表有错误")
private Integer status; @ApiModelProperty(value = "总记录")
private Integer total; @ApiModelProperty(value = "业务数据")
private T data; @ApiModelProperty(value = "200 代表无错误 400代表有错误--->加入这个字段是原生需求")
private Integer code; @ApiModelProperty(value = "当前页码")
private Integer pageNo = 1; @ApiModelProperty(value = "当前页码,默认:10")
private Integer pageSize = Integer.valueOf(10); // 页面大小,设置为“-1”表示不进行分页(分页无效) @ApiModelProperty(value = "总记录数")
private long totalSize;// 总记录数,设置为“-1”表示不查询总数 private Map<String,Object> DataMap; public CommonDTO(Integer status) {
if (status == 0){
this.status = status;
this.code = 200;
this.msg = "操作成功";
}
this.data = null;
} public CommonDTO(Integer status, Integer total) {
if (status == 0){
this.status = status;
this.code = 200;
this.msg = "操作成功";
}
this.data = null;
this.total = total;
} public Map<String, Object> getDataMap() {
return DataMap;
} public void setDataMap(Map<String, Object> dataMap) {
DataMap = dataMap;
} public Integer getCode() {return code;} public void setCode(Integer code) {this.code = code;} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Integer getStatus() {
return status;
} public void setStatus(Integer status) {
this.status = status;
} public Integer getTotal() {
return total;
} public void setTotal(Integer total) {
this.total = total;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
} public Integer getPageNo() {
return (pageNo!=null&&pageNo>0)?pageNo:-1;
} public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
} public Integer getPageSize() {
return (pageSize!=null&&pageSize>0)?pageSize:10;
} public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
} /**
* 获取设置总数
* @return
*/
public long getTotalSize() {
return totalSize;
} /**
* 设置数据总数
* @param count
*/
public void setTotalSize(long totalSize) {
this.totalSize = totalSize;
if (pageSize >= totalSize){
pageNo = 1;
}
} @Override
public String toString() {
return "CommonDTO{" +
"msg='" + msg + '\'' +
", status=" + status +
", total=" + total +
", data=" + data +
'}';
}
}
package lf.entity; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; @ApiModel(description = "用户实体")
public class BsdUser implements Serializable {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("组织id")
private Long orgId;
@ApiModelProperty("用户类型(0,品牌商1,服务商2,零售商,3客服)")
private Integer userType;
@ApiModelProperty("登录名")
private String loginName;
@ApiModelProperty("电话")
private String phone;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("简称")
private String shortName;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("联系人")
private String contactUserName;
@ApiModelProperty("地址")
private String address;
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("纬度")
private BigDecimal latitude;
@ApiModelProperty("级别(0,普通会员,1,一级会员,2,二级会员,3三级会员,4,四级会员,5,五级会员)")
private Integer level;
@ApiModelProperty("状态(0,无效,1有效,2未审核,3审核未通过)")
private Integer state;
@ApiModelProperty("银行卡")
private String bankCard;
@ApiModelProperty("总积分")
private Long totalPoints;
@ApiModelProperty("上级组织id")
private Long superiorId;
@ApiModelProperty("创建人id")
private Long createdBy;
@ApiModelProperty("最后更新人")
private Long lastUpdatedBy;
@ApiModelProperty("创建日期")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createdDate;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("最后更新日期")
private Date lastUpdatedDate;
@ApiModelProperty("软删除标志")
private Integer removeFlag;
@ApiModelProperty("图片地址")
private String imgUrl;
@ApiModelProperty("消费总金额")
private BigDecimal totalPaymentAmount;
@ApiModelProperty("佣金")
private BigDecimal commission;
@ApiModelProperty("运费")
private BigDecimal freight;
@ApiModelProperty("编号")
private String code;
@ApiModelProperty("已经支付定金")
private Long depositPaid;
@ApiModelProperty("注册信息附件信息传")
private String registerAttachmentUrl;
@ApiModelProperty("支付密码")
private String payPassWord;
@ApiModelProperty("钱包余额")
private BigDecimal balance;
@ApiModelProperty("现金卷余额")
private BigDecimal cashRoll; private static final long serialVersionUID = 1L; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public Long getOrgId() {
return orgId;
} public void setOrgId(Long orgId) {
this.orgId = orgId;
} public Integer getUserType() {
return userType;
} public void setUserType(Integer userType) {
this.userType = userType;
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code == null ? null : code.trim();
} public String getLoginName() {
return loginName;
} public void setLoginName(String loginName) {
this.loginName = loginName == null ? null : loginName.trim();
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone == null ? null : phone.trim();
} public String getShortName() {
return shortName;
} public void setShortName(String shortName) {
this.shortName = shortName == null ? null : shortName.trim();
} public String getName() {
return name;
} public void setName(String name) {
this.name = name == null ? null : name.trim();
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password == null ? null : password.trim();
} public String getContactUserName() {
return contactUserName;
} public void setContactUserName(String contactUserName) {
this.contactUserName = contactUserName == null ? null : contactUserName.trim();
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address == null ? null : address.trim();
} public BigDecimal getLongitude() {
return longitude;
} public void setLongitude(BigDecimal longitude) {
this.longitude = longitude;
} public String getRegisterAttachmentUrl() {
return registerAttachmentUrl;
} public void setRegisterAttachmentUrl(String registerAttachmentUrl) {
this.registerAttachmentUrl = registerAttachmentUrl == null ? null : registerAttachmentUrl.trim();
} public BigDecimal getLatitude() {
return latitude;
} public void setLatitude(BigDecimal latitude) {
this.latitude = latitude;
} public Integer getLevel() {
return level;
} public void setLevel(Integer level) {
this.level = level;
} public String getImgUrl() {
return imgUrl;
} public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl == null ? null : imgUrl.trim();
} public Integer getState() {
return state;
} public void setState(Integer state) {
this.state = state;
} public String getBankCard() {
return bankCard;
} public void setBankCard(String bankCard) {
this.bankCard = bankCard == null ? null : bankCard.trim();
} public BigDecimal getTotalPaymentAmount() {
return totalPaymentAmount;
} public void setTotalPaymentAmount(BigDecimal totalPaymentAmount) {
this.totalPaymentAmount = totalPaymentAmount;
} public Long getTotalPoints() {
return totalPoints;
} public void setTotalPoints(Long totalPoints) {
this.totalPoints = totalPoints;
} public Long getSuperiorId() {
return superiorId;
} public void setSuperiorId(Long superiorId) {
this.superiorId = superiorId;
} public BigDecimal getCommission() {
return commission;
} public void setCommission(BigDecimal commission) {
this.commission = commission;
} public BigDecimal getFreight() {
return freight;
} public void setFreight(BigDecimal freight) {
this.freight = freight;
} public Long getDepositPaid() {
return depositPaid;
} public void setDepositPaid(Long depositPaid) {
this.depositPaid = depositPaid;
} public String getPayPassWord() {
return payPassWord;
} public void setPayPassWord(String payPassWord) {
this.payPassWord = payPassWord == null ? null : payPassWord.trim();
} public BigDecimal getBalance() {
return balance;
} public void setBalance(BigDecimal balance) {
this.balance = balance;
} public BigDecimal getCashRoll() {
return cashRoll;
} public void setCashRoll(BigDecimal cashRoll) {
this.cashRoll = cashRoll;
} public Long getCreatedBy() {
return createdBy;
} public void setCreatedBy(Long createdBy) {
this.createdBy = createdBy;
} public Date getCreatedDate() {
return createdDate;
} public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
} public Long getLastUpdatedBy() {
return lastUpdatedBy;
} public void setLastUpdatedBy(Long lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy;
} public Date getLastUpdatedDate() {
return lastUpdatedDate;
} public void setLastUpdatedDate(Date lastUpdatedDate) {
this.lastUpdatedDate = lastUpdatedDate;
} public Integer getRemoveFlag() {
return removeFlag;
} public void setRemoveFlag(Integer removeFlag) {
this.removeFlag = removeFlag;
}
}
添加service层
package lf.service; import lf.entity.BsdUser; public interface BsdUserSerive {
/**
* 根据用户id获取用户
* @param id
* @return
*/
public BsdUser getUserById(Long id);
}
package lf.service.impl; import lf.entity.BsdUser;
import lf.mapper.BsdUserMapper;
import lf.service.BsdUserSerive;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service
public class BsdUserSeriveImpl implements BsdUserSerive{ @Autowired
private BsdUserMapper userMapper;
/**
* 根据用户id获取用户信息
* @param id
* @return
*/
@Override
public BsdUser getUserById(Long id) {
return userMapper.getUserById(id);
}
}
添加mapper层
package lf.mapper; import lf.entity.BsdUser;
import org.mapstruct.Mapper; import java.math.BigDecimal;
import java.util.List;
import java.util.Map; public interface BsdUserMapper{ /**
* 根据用户id获取用户信息
* @param id
* @return
*/
public BsdUser getUserById(Long id); }
添加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="lf.mapper.BsdUserMapper">
<resultMap id="BsdUserResultMap" type="lf.entity.BsdUser">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="org_id" jdbcType="BIGINT" property="orgId" />
<result column="user_type" jdbcType="INTEGER" property="userType" />
<result column="code" jdbcType="VARCHAR" property="code" />
<result column="login_name" jdbcType="VARCHAR" property="loginName" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="short_name" property="shortName" jdbcType="VARCHAR" />
<result column="register_attachment_url" property="registerAttachmentUrl" jdbcType="VARCHAR" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="contact_user_name" jdbcType="VARCHAR" property="contactUserName" />
<result column="address" jdbcType="VARCHAR" property="address" />
<result column="longitude" jdbcType="DECIMAL" property="longitude" />
<result column="latitude" jdbcType="DECIMAL" property="latitude" />
<result column="level" jdbcType="INTEGER" property="level" />
<result column="img_url" jdbcType="VARCHAR" property="imgUrl" />
<result column="state" jdbcType="INTEGER" property="state" />
<result column="bank_card" jdbcType="VARCHAR" property="bankCard" />
<result column="total_payment_amount" jdbcType="DECIMAL" property="totalPaymentAmount" />
<result column="commission" jdbcType="DECIMAL" property="commission" />
<result column="freight" jdbcType="DECIMAL" property="freight" />
<result column="total_points" jdbcType="BIGINT" property="totalPoints" />
<result column="superior_id" jdbcType="BIGINT" property="superiorId" />
<result column="created_by" jdbcType="BIGINT" property="createdBy" />
<result column="created_date" jdbcType="TIMESTAMP" property="createdDate" />
<result column="last_updated_by" jdbcType="BIGINT" property="lastUpdatedBy" />
<result column="last_updated_date" jdbcType="TIMESTAMP" property="lastUpdatedDate" />
<result column="remove_flag" jdbcType="INTEGER" property="removeFlag" />
<result column="deposit_paid" jdbcType="DECIMAL" property="depositPaid" />
<result column="pay_pass_word" jdbcType="VARCHAR" property="payPassWord" />
<result column="balance" jdbcType="DECIMAL" property="balance" />
<result column="cash_roll" jdbcType="DECIMAL" property="cashRoll" />
</resultMap>
<sql id="BsdUser_Column_List">
id, org_id, user_type, code, login_name, phone, name,short_name,register_attachment_url,password, contact_user_name,
address, longitude, latitude, level, img_url, state, bank_card, total_payment_amount,commission,freight,
total_points, superior_id, created_by, created_date, last_updated_by, last_updated_date,
remove_flag, deposit_paid, pay_pass_word, balance, cash_roll
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BsdUserResultMap">
select
<include refid="BsdUser_Column_List" />
from bsd_user
where id = #{id}
</select> <select id="getUserById" parameterType="java.lang.Long" resultMap="BsdUserResultMap">
select
<include refid="BsdUser_Column_List" />
from bsd_user
where id = #{id}
</select> </mapper>
添加jsp(如果工具是idea,jsp路径如为:/src/main/resources/META-INF/resources/WEB-INF/jsp;如果eclipse、myEclipse工具,放在在 src/main 下面创建 webapp/WEB-INF/jsp 目录用来存放我们的jsp页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页</title>
</head>
<body> <h1>欢迎登陆甘雨路主页</h1>
<div>登陆时间:${time}</div>
<div>登陆人:${loginName}</div> </body>
</html>
添加mybatis配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
添加application.properties文件(基本配置)
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp #swagger
modulePath=/lf
添加datasource.properties文件(数据源配置)
#数据源配置
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/bsdmxm?useUnicode=true&characterEncoding=utf8
spring.datasource.username = bs
spring.datasource.password = bs7
添加mybatis.properties文件(mybatis配置)
#mybatis 配置
mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:lf/mapper/xml/*.xml
mybatis.type-aliases-package=lf.entity
然后启动程序,在浏览器输入http://localhost:8080/swagger-ui.html 可查看相关接口
然后启动程序,在浏览器输入http://localhost:8080/lf/page/company?id=52 即可
然后启动程序,在浏览器输入http://localhost:8080/lf/user/info?id=51 即可