1、springboot整合swagger接口文档
引入依赖
<!--引入swagger2依赖-->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.1.RELEASE</version>
</dependency>
<!--图形化依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
添加配置类
@Bean
public Docket docket(){
Docket docket = new Docket(DocumentationType.SWAGGER_2);
return docket;
}
开启swagger2注解驱动
@SpringBootApplication
@MapperScan("com.newspring.dao")
@EnableSwagger2//开启swagger2注解驱动
public class NewSpring01Application {
public static void main(String[] args) {
SpringApplication.run(NewSpring01Application.class, args);
}
}
测试用网页路径:http://localhost:8888/doc.html
@Api:接口类的说明 加在controller类上
@ApiOperation: 接口方法的说明。 加在controller方法上
@ApiImplicitParams: 接口方法的所有参数的说明.,加在接口方法上
@ApiImplicitParam:单个参数的说明,一般为@ApiImplicitParams注解的value值
--name: 参数名
--value: 参数的说明
--require: 是否为必须的
--dataType: 参数类型说明 int string
@ApiModel: 对实体类的说明,加在实体类上
@ApiModelProperty: 单个参数的说明,加在实体类的参数上
2、springboot整合mybatis-plus
引入依赖
<dependencies>
<!--mp的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
修改配置文件
编写实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("学生类")
public class Student {
@TableId(type = IdType.AUTO)
@ApiModelProperty("学生id")
private Integer id;
@ApiModelProperty("学生姓名")
private String name;
@ApiModelProperty("学生电话")
private String phone;
@ApiModelProperty("学生邮箱")
private String email;
@ApiModelProperty("学生专业")
private String profession;
@ApiModelProperty("学生年龄")
private Integer age;
@ApiModelProperty("学生年级")
private Integer gender;
@ApiModelProperty("学生状态")
private Integer status;
@ApiModelProperty("学生入学时间")
private Date createtime;
@TableField(exist = false)
private Role role;
}
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Role对象", description="")
public class Role implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String rolename;
@TableField("roleDesc")
private String roleDesc;
}
编写dao接口(可连表)
@Mapper
public interface StudentDao extends BaseMapper<Student> {
IPage<Student> selectPageWithRole(IPage<Student> page, @Param("ew") Wrapper<Student> querywraffer);//此为连表查询,单表查询可以不用写方法交给mp
}
编写mapper文件
<?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.newspring.dao.StudentDao">
<resultMap id="selectMapper" type="com.newspring.entity.Student" autoMapping="true">
<id column="id" property="id"/>
<association property="role" javaType="com.newspring.entity.Role" autoMapping="true">
<id column="id" property="id"/>
</association>
</resultMap>
<select id="selectPageWithRole" resultMap="selectMapper">
select s.*,r.rolename from student s join role r on s.status=r.id
<if test="ew!=null and ew.customSqlSegment!=null">
${ew.customSqlSegment}
</if>
</select>
</mapper>
业务实现类
@Override
public Result selectPageWithRole(Integer currentPage, Integer pageSize, SearchVo searchVo) {
if(searchVo.getExtime()!=null){
searchVo.setStartTime(searchVo.getExtime().get(0));
searchVo.setEndTime(searchVo.getExtime().get(1));
}
IPage<Student> iPage=new Page<>(currentPage,pageSize);
QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
if(StringUtils.hasText(searchVo.getName())){
queryWrapper.like("name",searchVo.getName());
}
if (Objects.nonNull(searchVo.getAge())){
queryWrapper.eq("age",searchVo.getAge());
}
if (Objects.nonNull(searchVo.getStartTime())){
queryWrapper.ge("createtime",searchVo.getStartTime());
}
if (Objects.nonNull(searchVo.getEndTime())){
queryWrapper.le("createtime",searchVo.getEndTime());
}
IPage<Student> iPage1 = studentDao.selectPageWithRole(iPage, queryWrapper);
return new Result(200,"查询成功",iPage1);
}
@Override
public Result deleteById(Integer id) {
int i = studentDao.deleteById(id);
if(i==0){
return new Result(500,"失败",0);
}
return new Result(200,"成功",1);
}
@Override
public Result selectRole() {
List<Role> roles = roleDao.selectList(null);
return new Result(200,"成功",roles);
}
@Override
public Result insert(Student student) {
int insert = studentDao.insert(student);
if(insert==0){
return new Result(500,"失败",0);
}
return new Result(200,"成功",1);
}
@Override
public Result update(Student student,Integer id) {
UpdateWrapper<Student> wrapper=new UpdateWrapper<>();
wrapper.eq("id",id);
int update = studentDao.update(student, wrapper);
if(update==0){
return new Result(500,"失败",0);
}
return new Result(200,"成功",1);
}