温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Martian的介绍以及用法是怎样的

发布时间:2021-09-29 16:12:07 来源:亿速云 阅读:140 作者:柒染 栏目:网络管理

Martian的介绍以及用法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

项目简介

Martian 是一个声明式API编程 (DAP) 的Java开发框架

  • 以HttpServer作为 http服务,彻底脱离Tomcat这一类的Web容器和Servlet,同时也让项目减少了几个依赖

  • 声明式API,让Controller变成了一个interface,降低了开发的工作量

  • 拥有其他web框架 拥有的大部分功能,比如AOP,IOC,声明式事务,异常监听等

  • 拥有自主开发的 半ORM持久层框架,并天然的集成到了Martian中

  • 如果你不喜欢HttpServer,我们也提供了Tomcat启动器

项目生态

  • 【分布式组件】Martian-cloud

  • 【网关及其他组件】Martian-gateway

  • 【更多组件】筹划中

官方文档

http://mars-framework.com/doc.html?tag=martian

使用示例

https://github.com/yuyenews/Mars-Example

项目特性

一、声明式API

只需要在你的interface上加上一个注解,即可对外提供一个接口,并且我们还支持传统的Controller写法

@MarsApi(refBean="要引用的bean的name")
public interface TestApi {

   返回类型 selectList(TestDTO testDTO);
}

二、单表增删改查无sql

// 根据主键查询一条数据
@MarsGet(tableName = "userinfo",primaryKey = "id")
public abstract 要返回的实体类 selectById(int id);

// 单表新增
@MarsUpdate(tableName = "userinfo",operType = OperType.INSERT)
public abstract int insert(实体对象参数);

// 单表根据主键删除
@MarsUpdate(tableName = "userinfo",operType = OperType.DELETE,primaryKey = "id")
public abstract int delete(int id);

// 单表根据主键修改
@MarsUpdate(tableName = "userinfo",operType = OperType.UPDATE,primaryKey = "id")
public abstract int update(实体对象参数);

三、参数校验只需一个注解

在API接口的参数对象里的字段上加上一个注解即可(VO的字段上加注解)

// 不可为空,且长度在2-3位
@MarsDataCheck(notNull = true,maxLength = 3L,minLength = 2L, msg = "id不可为空且长度必须在2-3位之间")
private Integer id;

// 正则校验
@MarsDataCheck(reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$",msg = "密码不可以为空且必须是6-12位数字字母组合")
private String password;

前端如何得到提示?

正常请求API就好了,如果校验不通过会得到这样一个json

{"error_code":1128,"error_info":"提示文字"}

四、异常监听器

通常我们在写代码的时候,需要给每个Controller的方法加上try{}catch(){},用来在异常的时候,能够正常的返回 json串

spring是有一个叫ExecptionHandler 来解决这个问题,而Martion也提供了对应的解决方案

解决方案就是什么都不用管,如果出了异常,会自动给前端返回如下json串

{"error_code":500,"error_info":"异常提示"}

五、一行注解,解决分布式锁

在要加锁的方法上添加RedisLock注解

@RedisLock(key = "自己定义一个key")
public int insert(){
  return 1;
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI