# mgfinal **Repository Path**: mgang/mgfinal ## Basic Information - **Project Name**: mgfinal - **Description**: 基于mgwork(servlet3.0多实例非单例)做mvc框架,mybatis做orm框架,mgioc做单例容器的mgfinal框架,致力于打造实用的java后台底层。 适用于中小型应用,及研究框架底层学习爱好者 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 74 - **Forks**: 17 - **Created**: 2016-05-04 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: webframework **Tags**: None ## README # mgfinal 基于mgwork(servlet3.0多实例非单例)做mvc框架, mybatis做orm框架, mgioc做单例容器的mgfinal框架, mgutil做日志及常用工具方法管理, 致力于打造实用的java后台底层。
适用于中小型应用,及研究框架底层学习爱好者。 ##使用maven来构建2016-5-23 ##更新文档 位置 /doc/mgfinal-1.0使用手册.pdf ##mgfinal框架源码目录 ![](./doc/img/mgfinal.png) ##相关包 (mgwork-ioc-2.0.jar mgwork-ioc框架集合(mvc + ioc) ----将源码移动到mgfinal中管理) --fastjson.jar json解析包 --freemarker.jar 视图包,支持freemarker目前。 --jedis.jar 使用redis db0来做ioc容器。 mgutil-1.0.jar 通用工具类模块,包含扫描包,proputil,log4j日志器 --log4j.jar log4j日志 mybatis-xx.jar mybatis框架(orm) --jsqlparser.jar --pagehelper.jar mybatis分页插件 --mybatisext.jar mybatis的扩展工具,用来完成对象CRUD操作 常用数据源 --c3p0 --c3p0-0.9.5.1.jar c3p0数据源依赖包 --mchange-commons-java.jar --druid --druid-1.0.5.jar druid数据源依赖包 mybatis-redis.jar mybatis的二级查询缓存(可选) --commons-pool2-.jar 依赖pool2jar --jedis.jar java操作redis的客户端包 ##mgfinal-1.0版本 2016-5-13 1:25,生成mgfinal的1.0版本。 特性: 1.点对点servlet3.0高速mvc控制跳转。 2.基于redis为容器的@ToBean,@UseBean高速ioc依赖注入。 3.支持jsp,html,freemarker的java视图。(后续可以添加更多支持) 4.集成mybatis的动态sql,通用orm。 5.集成mybatis-ext的简易对象CURD。 6.集成mybatis-redis的mybatis二级查询缓存。 7.支持流行数据源druid,c3p0,及mybatis自带数据源。 ##关于作者 一个喜爱代码的狂热工作者,常用名梦网,梦来梦往,mg0324等。
QQ:1092017732
github:https://github.com/mg0324
gitoschina:https://git.oschina.net/mgang
如果觉得不错的话,别忘了给个star咯。thanks.
##项目初探 ###2016-5-11 demo 图 ![](./doc/img/crud.png) ###2016-5-13 pagehelper demo图 ![](./doc/img/pagehelper.png) ##更新日志 ###2016-5-3 1.继承mgwork-2.0 和 mybatis 3.* 到mgfinal框架中。
2.搭建mybatis底层,初步增加丰富的查询封装。 (selectOne),(selectList),(selectMap),(selectListMap),(selectForInt),(selectForString)等
3.集成PageHelper来实现mybatis分页,新增分页案例及方法(selectPage).
###2016-5-4 1.整合mgwork-ioc框架,测试通过。
2.添加2个方法executeUpdate和executeQuery 通用的crud方法。
3.正在想办法实现事务控制! ###2016-5-10 1.完成事务控制,找到之前的原因(mysql的配置my.ini,未使用innodb的引擎,导致不支持事务。)找到原因后,事务支持成功。
//开启事务 this.demoDao.start(); //操作1 this.demoDao.ddlTx("com.mgfinal.vo.Demo.addDemo", p); //操作2 this.demoDao.ddlTx("com.mgfinal.vo.Demo.addDemo", p); //提交事务 this.demoDao.end(); 2.start,end的事务,放到master主分支中。另外还有一个基于SqlHelper先获取sql,然后conn来commit,rollback的事务支持提交到了v0.1分支。
3.修改方法名称 executeUpdate -> ddl , executeQuery -> query , executeUpdateWithTx -> ddlTx,只要是简单明了。
4.添加数据源支持常用数据源支持driud,c3p0等。
c3p0:
①添加jar包支持c3p0-0.9.5.1.jar和mchange-commons-java-0.2.10.jar
②mybatis.xml配置文件中,配置数据源如下 driud:
①添加jar包支持druid-1.0.5.jar
②mybatis.xml配置文件中,配置数据源如下 5.升级mgwork-ioc-1.2.jar,将日志常用操作丢给mgutil来管理。
###2016-5-11 1.集成mybatisext来完成对象CRUD操作的通用方法实现,包括(save,delete,update,one,list,page,count等);
###2016-5-13 1.集成mgwork-ioc-2.0.jar,使用redis来做ioc容器,默认使用的是redis的0数据库。 (请升级mgwork-ioc-2.0.jar,欢迎到http://git.oschina.net/mgang/mgwork下载)
注意点:1.redis存储对象,需要改对象实现Serializable序列化接口。 所以service抽象了一层BaseService,目前用做序列化实现。 dao的序列化交给了baseDaoImpl来实现。 vo,bean的部分,就需要自己手动加上了。 2.在mgwork.properties中加上配置ioc容器的redis服务。 #redis服务主机 mg.ioc.redis.host = localhost #redis服务端口 mg.ioc.redis.port = 6379 2.使用mybatis-redis.jar工具包,来做mybatis查询缓存,提供查询响应效率。
注意点:1.加入mybatis-redis-1.0.0-beta2.jar包。 2.在要使用查询缓存的mapper中首行加上配置。 3.可以开启mybatis中的自身缓存(一级),redis就算做2级缓存了。在mybatis.xml主配置文件中 加上settings节点如下: 3.加入mybatis-redis要的配置文件,配置查询缓存连接的redis服务,如下: #使用redis的第2个数据库来做mybatis查询缓存 host=localhost port=6379 connectionTimeout=5000 soTimeout=5000 password= #选择数据库,0被mgwork-ioc占用 database=1 clientName= 4.使用redis图形客户端查看redis数据库中的key情况: ![](./doc/img/mgfinal-redis-orm.png) 5.生成mgfinal-1.0版本,导出jar包为mgfinal-1.0.jar。 6.加入mgwork ioc等源码,让mgfinal管理,并调整目录。更改web.xml中mgfinal ioc监听启动配置。 com.mgfinal.core.ioc.context.IocListener ###2016-5-14 1.实现ioc的2中容器,传统的map,和redis。
加入Ioc接口,实现MapIoc,RedisIoc容器实现类。
2.整理mgwork.properties中key,mgwork,ioc都用mgfinal来修饰,并修改mgwok.properties文件为mgfinal.properties。
3.调整日志输出,mgfinal work,mgfinal ioc前缀。
###2016-5-17 1.完成基本手册并上传。
2.考虑到二级缓存应用的业务场景,http://blog.csdn.net/isea533/article/details/44566257文章。这里可以自行选择使用mybatis的二级缓存, 还是redis的二级缓存,还是最好不使用二级缓存,自己在业务层中缓存。
3.给mgfinal的mvc层集成jspsmartupload工具来实现文件上传。
###2016-5-23 1.使用maven来管理mgfinal项目。
2.集成commons-fileupload实现文件上传和下载。