# Mars-Java
**Repository Path**: figole/Mars-Java
## Basic Information
- **Project Name**: Mars-Java
- **Description**: Mars-Java是一个简单的,开箱即用的java框架,可以帮助你很快的建立后端服务
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: http://mars-framework.com/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 40
- **Created**: 2020-06-09
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Declarative API programming (DAP) framework
## Usage example
[https://github.com/yuyenews/Mars-Example](https://github.com/yuyenews/Mars-Example)
## Program features
### 1. the declarative API
You only need to add a annotation to the parent interface of your service to provide an interface to the outside world. We also support the traditional Controller
```java
@MarsApi(refBean="The name of the bean to reference")
public interface TestService {
`Return type` selectList(TestDTO testDTO);
}
```
### 2. Single table addition, deletion, modification, and select without SQL
```java
// Query a piece of data based on the primary key
@MarsGet(tableName = "userinfo",primaryKey = "id")
public abstract `Return type` selectById(int id);
// Insert a piece of data
@MarsUpdate(tableName = "userinfo",operType = OperType.INSERT)
public abstract int insert(`Entity object parameter`);
// Delete a piece of data based on the primary key
@MarsUpdate(tableName = "userinfo",operType = OperType.DELETE,primaryKey = "id")
public abstract int delete(int id);
// Modify a piece of data based on the primary key
@MarsUpdate(tableName = "userinfo",operType = OperType.UPDATE,primaryKey = "id")
public abstract int update(`Entity object parameter`);
```
### 3. Parameter verification requires only one annotation
Just add a annotation to the field of VO
```java
// Cannot be empty and is 2-3 digits long
@MarsDataCheck(notNull = true,maxLength = 3L,minLength = 2L, msg = "id不可为空且长度必须在2-3位之间")
private Integer id;
// Regular check
@MarsDataCheck(reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$",msg = "密码不可以为空且必须是6-12位数字字母组合")
private String password;
```
How does the front end get prompted?
Just request the API normally. If the verification fails, you will get such a json.
```json
{"error_code":1128,"error_info":"提示文字"}
```
### 4. Exception listener
Usually when we write code, we need to add try {} catch () {} to each Controller method, which can be used to return the json string normally when the exception
Spring has an ExecptionHandler to solve this problem, and Mars-java also provides a corresponding solution
The solution is to do nothing, and if something goes wrong, it will automatically return the following json string to the front end
```json
{"error_code":500,"error_info":"异常提示"}
```
### 5. One-line annotations to resolve distributed locks
Add RedisLock annotation on the method to be locked
```java
@RedisLock(key = "Define a key yourself")
public int insert(){
return 1;
}
```