1、新建业务表,如新建一个oly_test表,做代码生成测试,只是为了说明生成代码方法,字段比较简单

2、登录系统,打开代码生成页面,填写生成信息,如下图为示例

作者信息,随便填,业务名称填写表对应的业务,模块名即为生成后的包名,然后勾选要生成的表以及需要生成的模块,表前缀改为你数据表的前缀,这样生成的实体类就不会带前缀。

选择好后点击生成,可以看到基本的代码已经生成成功。

3、我们在Java包下找到生成的sql文件

这里是为这个生成的模块创建菜单的语句,直接放在MySQL中运行即可,会把测试模块的菜单插入sys_menu菜单表中。

4、运行SQL文件成功后,我们打开 系统管理 -> 角色管理 ,给当前的登录的超级管理员,增加刚才新增的权限,这样才会看到我们刚刚生成的页面。

5、点击保存后,重启项目,再次进入项目,我们发现生成成功了

问题一生成代码时包没有按预期生成到指定位置(路径)

修改模块 guns-generator

找到WebGeneratorConfig类,修改生成代码包的位置

原代码中的生成策略如上图所示,我们实际中生成代码如果不放在modular.system目录下时,可以修改这里。

如,我新建一个test模块,修改方法如下:

packageConfig.setEntity(genQo.getProjectPackage() + ".modular.test.model");

packageConfig.setMapper(genQo.getProjectPackage() + ".modular.test.dao");

packageConfig.setXml(genQo.getProjectPackage() + ".modular.test.dao.mapping");

这样,一个功能的相关代码就都会在一个模块下了,符合我们的习惯

问题二,Guns框架多表查询结果展示方法

Guns开源框架中对于多表查询的字段展示,使用了包装类,查询结果在返回给前端页面展示时走了一下包装类,在包装类中做主表外其他表字段的查询,最后通过map以键值对的方式赋值。

感觉这种方法挺好的,开发中可以先不考虑很多,一股脑的把单表查询全部做了,需要关联什么在包装类中改,也貌似符合开闭原则,废话不多说,我们通过一个例子来看看他是怎么做的。

首先是映射xml文件,查询的语句不再使用默认生成的BaseResultMap,而是普通的map

我们再看对应的dao接口

接着是包装类,由我们自己新建一个

public class ProjectInfoWarpper extends BaseControllerWarpper {

public ProjectInfoWarpper(List> list){

super(list);

}

@Override

public void warpTheMap(Map map){

map.put("projectName", ConstantFactory.me().getProjectNameById((Integer) map.get("project_id")));

}

}

ConstantFactory.me().getProjectNameById((Integer) map.get("project_id"))这句的意思是通过id查询出工程的名称,需要在IConstantFactory中定义接口,如下:

接口的具体实现:

最后,Controller中,我们在查询结果返回给客户端的时候,会调用这个包装类

这样就可以很方便的在不改动xml及实体类的情况下轻松的实现多表查询结果的展示。

guns java_Guns代码生成简明教程相关推荐

  1. c语言程序链接过程,C语言简明教程(二):C程序编译链接过程和实例对照详解...

    不像高级编程语言,在C语言开发中,了解其编译链接过程显得相对重要,因为C语言是较为底层的语言,很多时候我们调试C程序或者解决其它问题都可能会涉及到C编译链接的相关知识,例如编译动态库或者静态库.下面我 ...

  2. 基于LLVM的编译原理简明教程 (1) - 写编译器越来越容易了

    基于LLVM的编译原理简明教程 (1) - 写编译器越来越容易了 进入21世纪,新的编程语言如雨后春笋一样不停地冒出来.需求当然是重要的驱动力量,但是在其中起了重要作用的就是工具链的改善. 2000年 ...

  3. CGIC简明教程(转摘)

    CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库"CGIC"完成Web开发的各种要求. *********************************     基础 ...

  4. kangle web server源代码安装简明教程

    kangle web server源代码安装简明教程 - kangle使用交流 - kangle软件 是一款高性能web服务器,反向代理服务器,提供虚拟主机管理系统及代理服务器,web服务器架设 - ...

  5. CentOs6.5中安装和配置vsftp简明教程

    这篇文章主要介绍了CentOs6.5中安装和配置vsftp简明教程,需要的朋友可以参考下 一.vsftp安装篇 复制代码代码如下: # 安装vsftpd yum -y install vsftpd # ...

  6. sqlalchemy mysql_SQLAlchemy简明教程

    原文可见:SQLAlchemy简明教程 - Jiajun的编程随想 SQLAlchemy是Python中常用的一个ORM,SQLAlchemy分成三部分: ORM,就是我们用类来表示数据库schema ...

  7. python tcp server_python scoket 编程 | tcp server client - 简明教程

    TCP 和 UDP 的区别 这两个协议都是传输层的协议,解决的问题,都是端口与端口的通信问题. TCP 每次建立通信,都需要三次握手,确定双方状态完毕,在发送数据.如果发送的数据出现了异常,TCP 也 ...

  8. 简明python教程pdf-python简明教程中文pdf

    python简明教程中文pdf电子书是作者通过自己对计算机语言多年来的研究和学习得出的学习经验,对于python新手来说非常有用,值得大家下载学习. python简明教程中文pdf文章目录 1.介绍 ...

  9. 简明python教程在线-Python简明教程

    Python简明教程在线阅读地址: https://bop.molun.net/ DocStrings 该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束.第二行为空行,后 ...

最新文章

  1. PNG透明兼容IE6的几种方法
  2. 粒子滤波到底是怎么得到的?
  3. Shoppica OpenCart 商城自适应主题模板 ABC-0002
  4. 世界围棋人机大战、顶峰对决第一盘:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序,Google AlphaGo首战告捷
  5. OpenID 和 OAuth 的区别及第三方登录的安全隐患分析
  6. 文件夹_【教程】创建透明文件夹(非隐藏文件夹哦)
  7. ajax可以发送文件,通过Ajax上传img时如何发送文件信息
  8. Android模拟器中sd卡的创建和文件的上传
  9. 常用无线通信协议Zigbee、bluetooth、wifi比较
  10. Mac 版pr 破解教程,亲测可行。
  11. 最速下降法解析(理解笔记)
  12. 带你玩转Visual Studio
  13. 测试智商的软件或网址,iq测试(sds在线测试)
  14. 互联网贷款大数据风控能做到什么程度?
  15. uniapp调用地图并导航
  16. 打假!你被假芯片坑惨过吗?今天教你一招!
  17. iOS设置键盘上Return按键及点击操作
  18. 77%的本科毕业生起薪超过1万元,程序员的薪资到底有多高?
  19. 建筑制图计算机辅助设计,计算机辅助设计AutoCAD建筑制图中绘制技巧研究.doc
  20. C语言文法(BNF)

热门文章

  1. 【Numpy金融领域的应用】伽玛分布和贝塔分布随机抽样——以债券违约率与回收率为分析对象
  2. 做技术,有没有必要参加IT培训
  3. 并查集——小希的迷宫
  4. anaconda下安装caffe及opencv环境
  5. 笨办法学Python 3 ex35学习笔记
  6. java comparator用法_Java Comparator thenComparingLong()用法及代码示例
  7. 新能源汽车充电桩的这些知识你都知道吗?
  8. 这个芒果真的很不一般!
  9. Android网络请求框架之——okhttp3
  10. 四十、Fluent 颗粒\气泡PBM模型