micro-mvc框架,借助nhmicro框架和groovy技术使所有的controller、servicebean、dao和sql脚本都支持动态热部署和调试。

Controller层
Controller层groovy中使用注解MicroUrlMapping设置url地址

类上的注解必须有并作为根路径

各个方法中设置子路径

比如下面的groovy中test方法可以调用url为/testController/test

方法参数固定为HttpServletRequest request, HttpServletResponse response

@MicroUrlMapping(name="/testController")
class TestController extends MicroControllerTemplate  {  
    public String tableName="micro_test3";
    public String getTableName(HttpServletRequest httpRequest){
        return tableName;
    } 

    @MicroUrlMapping(name="/test")
    public void test(HttpServletRequest request, HttpServletResponse response){

可以继承MicroControllerTemplate获取默认增删改查功能http接口。但需要在controller中写明super的调用过程并设置url

    @MicroUrlMapping(name="/delInfo")
    public void delInfo(HttpServletRequest httpRequest, HttpServletResponse httpResponse){
        super.delInfo(httpRequest, httpResponse);
    }

Service层

建议将service功能和controller层功能融合在同一个groovy中实现。如果一定要分出service层groovy,
又不愿意用GroovyExecUtil显示调用。可通过注解InjectGroovy注入service层groovy的代理接口对象。

加载groovy时遇到InjectGroovy注解的成员变量,会自动生成成员接口的代理对象并注入。
代理对象的功能是调用name指定的groovy中与接口同名的方法。

    @InjectGroovy(name="testGroovy")
    public ITest test;

如果service层对象是传统java编写的,或microdao的mapper对象,可以使用Resource从spring中注解注入。

    @Resource
    public TestRep testRep;

Aop机制

加载groovy时提供aop代理机制,默认提供事务aop和数据源切换aop
事务aop,可在加载时,识别Transactional注解,实现事务控制。

可自行别写特定功能代理。

开启代理需要在groovy的类中设置@MicroAop注解指定代理类

@MicroAop(name=[MicroDefaultLogProxy.class,MicroTMProxy.class,MicroDbProxy.class], property=["","",""])
@MicroUrlMapping(name="/testController")
class TestController extends MicroControllerTemplate  {  

Dao层

MicroDao同时支持mysql和oracle

MicroDao相对mybatis的优点:

1,sql脚本支持修改后热部署实时生效。

2,bean与数据库字段映射关系,通过注解设置到bean中,不必在sql脚本中体现。

3,sql脚本支持类似jsp的写法,且不必区分select、update使用不同标签,更加灵活。

4,不需要使用插件,内置支持物理分页。

5,不需要使用插件,内置支持针对bean的标准增删改查功能。

6,不需要使用插件,内置支持读写分离,分库分表。

7,针对mysql5.7支持动态字段。

支持mapper、template、非orm三种模式支撑业务系统

1,mapper指,通过扫描接口,运行时自动生成dao实例;

2,template指,通过继承template标准父类,生成dao子类;

3,非orm指,直接使用microDao实例,可以执行非orm更灵活的数据库操作。