基本概念

Mars-Java 是一个不需要容器的 Java 开发框架,不需要 Tomcat,不需要 JBoss,不需要 Netty,甚至连 Servlet 都不需要。

一个纯基于 JRE 类库开发的 Http 服务,一个不需要容器的 Java 开发框架。

他可以快速的开发出一个后端 Http 服务,支持 MVC,IOC,AOP,数据库操作,声明式事务等常用的特性,并且他更小,更快,更简单。

为什么要用 Mars-Java

当我们需要开发一些中小型网站的时候,如果使用 Java,那么往往会走向两个极端,要么使用非常简单的 JDBC+Servlet,要么使用非常巨大化的 Springboot+Mybatis,那么有没有一个折中的方案呢?当用户量可以预见的不会太多(多见于 B 端应用),又或者仅仅是一个逻辑不复杂的展示型网站,这个时候我们怎么办? 这个时候就可以使用 Mars-Java 了。

它非常的小,不到 Springboot+Mybatis 的一半,它功能齐全,包含了 Springboot 常用的几大功能,并且有自己的持久层封装。同时它也有自己的生态,目前有一个小型的分布式组件 Mars-Cloud 。

几乎可以解决你日常中的所有需求。

MVC 支持的请求方式

目前为止 MVC 支持 GET,POST 两种请求方式,这也是用的最多的两种方式,其他的暂时不支持。

传参方式支持以下三种:

application/x-www-form-urlencoded

multipart/form-data

application/json

数据库操作

一、简单的单表操作

// 根据主键查询一条数据

@MarsGet(tableName = "userinfo",primaryKey = "id")

public abstract `Return type` selectById(int id);

// 插入一条数据

@MarsUpdate(tableName = "userinfo",operType = OperType.INSERT)

public abstract int insert(`Entity object parameter`);

// 根据主键删除一条数

@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(`Entity object parameter`);

二、简单的分页操作

// 如果你的 sql 语句是固定的,那么只需要这样就可以分页了

@MarsSelect(sql = "select * from userinfo where name = #{name} and age = ${age}", resultType = 要返回的实体类.clss,page = true)

public abstract PageModel selectList(PageParamModel pageParamModel);

// 如果你的 sql 语句不固定,那么就这样

public PageModel findPage(PageParamModel pageParamModel) throws Exception {

String sql = "select * from userinfo where name like #{name}";

return JdbcTemplate.get().selectPageList(sql,pageParamModel,DemoEntity.class);

}

声明式 API

一、 先声明一下

@MarsApi(refBean = "expApiService")

public interface ExpApi {

/**

* get 请求示例

* http://127.0.0.1:8080/expGetRequest?name=张三&names=王五&names=赵六

* @param expVO

* @return

*/

List expGetRequest(ExpVO expVO);

}

二、实现这个接口就好

@MarsBean("expApiService")

public class ExpApiService implements ExpApi {

/**

* 这个方法上加了 aop 监听

* @param expVO

* @return

*/

@Override

@MarsAop(className = ExpAop.class)

public List expGetRequest(ExpVO expVO) {

// 打印接收到的参数,看是否接收成功

System.out.println(expVO.getName());

System.out.println(JSON.toJSONString(expVO.getNames()));

// 返回数据

return getExpResultData();

}

}

对,你们没看错,Controller 层没了,为什么会这样呢?这得从 Controller 的作用说起,在实际开发中,Controller 基本上起到两个作用,一个是参数校验,一个是响应数据。

在 Mars-Java 中,参数校验被封装掉了,直接用注解即可,响应数据,这个本来就没什么,直接返回就好,不需要去 Controller 里再返回一次了。

所以,干脆去掉了,让使用者专注在业务逻辑上。

java eles什么意思_Springboot 那么大,不用什么场景都用它吧,要不尝试下 Mars- Java ?...相关推荐

  1. Java开发人员必备的7大技能,每一个都必不可少

    Java存活这么多年,目前Java软件开发工程师已经成为"香饽饽"了,工作环境好,就业薪资高,成为很多门外汉羡慕的对象,确实Java已经成为比较受欢迎的编程语言.可以说当下Java ...

  2. java访问权限修饰符从大到小_程序员的术与道:道——Java修饰符之非访问控制修饰符...

    Java提供了很多修饰符,主要分为访问控制修饰符和非访问控制修饰符.通常放在语句的最前端,用来定义类.方法.变量. 下面介绍一下Java提供的非访问控制修饰符. static 修饰符:修饰类方法和类变 ...

  3. java和网易我的世界有什么区别_网易我的世界手机版对比正版JAVA版我的世界有什么区别?...

    你说的这部分都属于游戏内部机制问题 首先网易手机版实质上就是基岩版,还是更新贼慢的基岩版(笑).所以题主完全可以去minecraft wiki查找相关资料 然后我说一下我知道的一些主要差异吧 刷怪效率 ...

  4. cmd下运行java文件时,找不到或无法加载主类的解决方法

    最近再看java,却被一个看似很基础的hellorworld头疼了十几分钟,百度了一下,若你在cmd下编辑及运行.java文件时报错,解决方案如下,如图所示: d盘根目录下的.java文件. 打开cm ...

  5. Java多线程之线程池7大参数、底层工作原理、拒绝策略详解

    Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...

  6. java的学习步骤方法书籍大总结

    java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其 ...

  7. 学完Java后可从事的十大领域!

    Java是时下非常流行的语言,这意味着有很多很多不同的工作可供选择.Java软件工程师入行1-3年,年薪已达到10-15万,而且在IT行业工作经验越多,薪资待遇越高. 工作选择多,薪资待遇好,成了许多 ...

  8. Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了

    Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 文章目录 Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 缘起 开始开发 测试效果 开源地址和总结 郑重声明 因本文中涉及到爬虫 ...

  9. 【Java SE】SE“细节”知识大总结

    目录 1.初识JAVA 1.1环境配置时JDK.JRE.JVM之间是什么关系? 1.2Java代码运行过程 1.3一个简单Java程序的解释 1.4什么叫"一次编译,到处运行"? ...

最新文章

  1. 用 js判断 一个数是否是素数(质数)_2020-09-20:如何判断一个数是质数?
  2. [转]两个经典的windbg调试案例,值得学习。
  3. 在.NET Core中使用Channel(一)
  4. Spring Boot使用MyBatis 3打印SQL的配置
  5. bash脚本切换管理员_开始为系统管理员使用Bash脚本
  6. Linq转换操作之OfType,Cast,AsEnumerable,ToLookup源码分析
  7. python可视化编程软件下载_mPython-mPython(图形化编程软件)下载 v0.5.0官方版-下载啦...
  8. 供应链SCOR模型搭建/改进
  9. 教你如何在github上提交代码(Window10示例,内含2021年github提交机制的更新变动)
  10. CAD转换PDF格式,文字模糊不显示
  11. 大型服装集团BI决策系统的分析主题模块
  12. 爬取豆瓣电影排行榜top250最新教程!经典爬虫案例
  13. pygame按键持续按下响应
  14. ardupilot 中关键坐标系
  15. 微信开发_网页授权获取用户的基本信息
  16. 【四二学堂】WeGame导致电脑蓝屏!!刚开始怀疑是他搞的鬼,现在发现出现问题的不止我一个....
  17. 阿里云服务器部署可道云
  18. 平台的核心交互与基础角色——互联网平台建设系列...
  19. 程序员 怎么增值_什么是“免费增值”应用程序,它们如何工作?
  20. 如何利用TL431设计一个可调电压源

热门文章

  1. steps 步骤条中插入自定义描述description
  2. 如何把自己的电脑配置成外网可访问的服务器?
  3. 参加第一届MSRA博士生论坛的经历
  4. android毗邻(Pilin)即时聊天应用源码
  5. OpenStreetMap初探(七)——渲染和地图瓦片之安装Mapnik
  6. 乔安智联未能找到使用指定服务器,智联物联路由器设置和指定服务器通信
  7. 计算机无法共享的原因,文件夹无法共享的原因及其解决办法
  8. 因子分解机(FM)家族
  9. Python 爬虫分析豆瓣 TOP250 之 信息字典 和 马斯洛的锥子
  10. Python学习 Day30 正则表达式(二)