controller
@RestController
@CrossOrigin//解决跨域
@RequestMapping("/itemCat")//包含全部类型
@Autowired//关联Service
@GetMapping("/findItemCatList/{level}")//查询
@PutMapping("/status/{id}/{status}")//修改
@PostMapping("/saveItemCat")//新增
@DeleteMapping("/deleteItemCat")//删除
@RequestBody//POST PUT 将json格式的数据转为java对象
@PathVariable//DELETE GET 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
service
接口
@Service//Service层注解
@Autowired//关联Mapper
@Transactional//添加事务的控制
mapper
@Select("select * from user limit #{start},#{size}")
@Select("Sql!!!!!")
@Insert("sql")
@Update("sql")
@Delete("sql")
注意:extends BaseMapper<ItemCat>
pojo
@Data//lombok插件的getset和toString
@Accessors(chain=true)
@TableName("item")//("item_cat") 获取表名全小写
@TableId(type = IdType.AUTO) //主键自增
//@TableField("name")
//如果属性与字段同名(包括驼峰规则)注解可以省略
//pojo基类,完成2个任务,2个日期,实现序列化
@Data
@Accessors(chain=true)
public class BasePojo implements Serializable{
@TableField(fill = FieldFill.INSERT)
private Date created; //表示入库时需要赋值
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updated; //表示入库/更新时赋值.
}
//为了实现参数封装添加的数据
@TableField(exist = false) //该属性不存在
private List<ItemCat> children;//不是表格固有属性
private Role role; //定义role角色数据
private List<Rights> rightsList; //获取当前角色的权限信息
注意:implements Serializable
vo
AO实现了前后端的交互
@Data
@Accessors(chain = true)
@NoArgsConstructor//无参构造
@AllArgsConstructor//全参构造
config
//1.表示这个类 是一个配置类 目的: 封装对象-交给Spring容器管理
@Configuration
public class MybatisPlusConfig {
// @Bean 将方法的返回值对象,交给Spring容器管理
//MP分页机制 Mysql分页语句/Oracle分页语句 为了实现功能复用 需要手动配置
//根据数据库类型不同 之后动态的生成Sql MP才能调用分页对象
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
//定义分页拦截器对象
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MARIADB));
return interceptor;
}
}
@Component//将对象交给spring容器管理
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
Date date = new Date();
this.setFieldValByName("created",date,metaObject);
this.setFieldValByName("updated",date,metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
Date date = new Date();
this.setFieldValByName("updated",date,metaObject);
}
advice
/**
* Spring为了整合全局异常的处理 开发了如下的注解
* 1.@RestControllerAdvice //定义全局异常的处理类 返回值JSON串
* 2.@ExceptionHandler 标识拦截的异常的类型,如果类型匹配,则执行方法
*/
@RestControllerAdvice //只对Controller层有效
public class MyExceptionAdvice {
//写法:1.运行时异常(通用) 2.自定义异常信息 3.拦截所有异常Exception.class
@ExceptionHandler(RuntimeException.class)
public Object exception(Exception e){
e.printStackTrace(); //输出异常信息
//需求: 如果遇到异常,应该提示用户201/失败信息.
return SysResult.fail();
}
}
run
@SpringBootApplication
@MapperScan("com.jt.mapper")//Spring容器内部为接口创建代理对象
//JDK的动态代理对象
UserMapper.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.jt.mapper.UserMapper">
</mapper>
application.yml
server:
port: 8091
servlet:
context-path: /
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#mybatis-plush配置
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mappers/*.xml
configuration:
map-underscore-to-camel-case: true
logging:
level:
com.jt.mapper: debug