Beetl

MybatisPlus-常用代码生成器(不生成简单增删改查逻辑代码)

六眼飞鱼酱① 提交于 2020-08-12 06:37:39
引入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.1.tmp</version> </dependency> 添加模板依赖(mybaitsplus必须依赖一个模板freemarker/Velocity等都可以 必须要有) 3选一: <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency> --- Freemarker: <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> --- Beetl: <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.1.6.RELEASE</version> <

小书MybatisPlus第7篇-代码生成器的原理精讲及使用方法

こ雲淡風輕ζ 提交于 2020-07-29 07:01:37
本文是本系列文章的第七篇,前6篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小书MybatisPlus第3篇-自定义SQL 小书MybatisPlus第4篇-表格分页与下拉分页查询 小书MybatisPlus第5篇-Active Record模式精讲 小书MybatisPlus第6篇-主键生成策略精讲 一、代码生成器的基础实现原理 相信大部分的开发者都使用过或者听说过“模板引擎”,它可以帮我们实现视图与数据的分离,快速开发视图页面,并将模板整合结果用于在浏览器显示。其核心实现原理就是:HTML模板页面 + 页面数据 = 输出结果。页面视图输出的过程就是通过模板引擎实现的。 代码生成器的实现原理与模板引擎实现页面渲染的逻辑几乎是一致的,除了下面的几个区别: 所谓模板:就是某语言的代码 + 模板引擎语法的占位符,该占位符用来数据天换。所以代码生成器的模板文件不再专指HTML页面模板文件,可以是任何类型的代码文件。 模板引擎的输出结果在项目中是输出给浏览器进行页面渲染的,但是对于代码生成器而言,模板引擎的输出结果是保存到磁盘文件。 二、如何编写模板文件 要编写模板文件,首先我们要知道正常的代码待如何书写。比如下面的POJO代码: 上面的POJO代码写成Freemarker模板文件

Java 复杂excel报表导出

。_饼干妹妹 提交于 2020-05-01 02:48:32
MyExcel,是一个可直接使用Html文件,或者使用内置的Freemarker、Groovy、Beetl等模板引擎Excel构建器生成的Html文件,以Html文件中的Table作为Excel模板来生成任意复杂布局的Excel的工具包,支持.xls、.xlsx格式,支持对背景色、边框、字体等进行个性化设置,支持合并单元格。 Github: https://github.com/liaochong/myexcel 详细文档: https://github.com/liaochong/myexcel/wiki maven引用: < dependency > < groupId > com.github.liaochong </ groupId > < artifactId >my excel </ artifactId > < version >2 .1.1 </ version > </ dependency > 优点: 可生成任意复杂表格:本工具使用迭代单元格方式进行excel绘制,可生成任意复杂度excel,自适应宽度、高度; 零学习成本:使用html作为模板,学习成本几乎为零; 支持常用背景色、边框、字体等样式设置:具体参见文档-Style-support(样式支持)部分; 支持.XLS、.XLSX:支持生成.xls、.xlsx后缀的excel; 支持低内存SXSSF模式

Beetl 3中文文档 转载 http://ibeetl.com/guide/

不打扰是莪最后的温柔 提交于 2020-03-28 22:31:32
Beetl作者:李家智(闲大赋) < xiandafu@126.com > 1. 什么是Beetl 广告:闲大赋知识星球,付费会员 Beetl( 发音同Beetle ) 目前版本是3.0.7,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下: 功能完备:作为主流模板引擎,Beetl具有相当多的功能和其他模板引擎不具备的功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。 非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html 标签,使得开发CMS系统比较容易 超高的性能:Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker,2倍于JSP。参考附录),而且消耗较低的CPU。 易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。 扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签.

关于王银的一些看法

℡╲_俬逩灬. 提交于 2020-03-11 17:13:49
很久没有正儿八经写一些分享了,今天分享一下我对 王垠 的看法,首先贴一下其他网友的看法,主要来源于知乎 网友一 今天早上我把他的文章全部打印成pdf保存了下来,以防哪一天再也访问不到了。对于一个出身于农民家庭的我来说,很多社会上东西。在没有看到王垠的博客之前,我和大多数人一样。被当前社会的主流意识给误导。不懂得应该厌恶什么,应该尊重什么。除了垠神能在计算机科学上给我指导以外。我最大的收获是,在主流人群心里尊重的东西,在垠神那里一文不值。垠神就是一个在冰层上凿冰的人。我在冰层下面看着他,心里充满尊敬 。 网友二 王垠是技术内外对我启发最大的程序员之一,他是极具独立和自由精神的人。很多人嘲笑他,说他没一份工作能做得长久。然而关键在于,你勤勤恳恳 996 供房供车,真的过得比他开心,比他幸福,比他踏实吗?他的人生几乎是字面意义上随心所欲的,试问我们多少人做得到呢? 网友三 敬佩垠神,我认为他是一个真正纯粹的人。知行合一。 网友四 你说王垠的博客没有技术内容?我怀疑你是无脑黑 网友五 我特别欣赏,万里挑一的脑袋,一百年很难再长出一个。他可以没有作品,但他就是万里挑一的特别。 我对王垠的看法 垠神不仅仅告诉我们这是什么技术,而且还告诉了这个适用范围,这尤其困难,这需要丰富的经验和直接,还需要逆天的勇气。 面对"新技术",他在高声说,“且慢,你需要注意到一些问题”。 程序员不怕辛苦

Beetl 性能揭秘 1 :如何输出一个整型变量

荒凉一梦 提交于 2020-03-01 14:10:53
常规来说,IO流提供了输出字符串(字符数组)的功能,所以,通常的整型输出应该是这样的代码: String str = String.valueOf(12); out.write(str); 对于模板引擎来说,输出整形变量很常见,事实上,这个地方有非常大的性能提高空间。我们只要分析这俩句话的源码,就能看出,如何提高io输出int性能。 对于第一句 String.valueOf 实际上调用了Integer.toString(int i) 方法,此方法原代码如下 public static String toString(int i) { if (i == Integer.MIN_VALUE) return "-2147483648"; int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i); char[] buf = new char[size]; getChars(i, size, buf); return new String(buf, true); } 我们注意到,代码第5行分配了一个数组,对于任何一个高效的java工具来说,这都是个告警消息,分配数组耗时,垃圾回收也耗时 我们在分析out.write(str);代码,对于输出一个字符串,必须将字符串先转为字符串数组( 看到问题没有,这又回去了)

beetl 性能揭秘 2 :语言如何存取变量

不问归期 提交于 2020-03-01 13:37:17
对于一个程序语言来说,访问变量是一个基本的操作,也是最频繁使用的操作。提高Beetl访问变量的效率,将整体上提高Beetl的性能,本文介绍了Beetl是如何访问变量的。 首先看一个简单的例子: var a = "hi"; print(a); 第一行定义a变量,第二行引用a变量打印输出,通常设计下,可以在变量定义的时候将变量保存到map里,需要用的时候根据变量名取出。因此上诉代码可以翻译为java的类似如下代码: context.put("a","hi"); print(context.get("a"); 尽管我们都知道Map存取都是非常快的,但还有没有更快的方式呢,答案就是有,那就是数组,数组的存取更快,通过如下代码可以看出, 数组的存放元素的速度是Map的10倍,读取那就更快了,是100倍 String value1 = "a"; String value2 = "b"; String value3 = "c"; String key1 = "key1"; String key2 = "key2"; String key3 = "key3"; String[] objects = new String[3]; int loop = 10000 * 5000; //计算数组存消耗的时间 Log.key1Start(); for (int i = 0; i < loop; i++)

Java性能优化-高速Map存取

余生长醉 提交于 2020-03-01 13:08:52
本博客来自我的新书Java性能优化(暂定名),第5章的Java代码优化技巧节选2,也欢迎阅读我的新书 《Spring Boot 2 精髓 》 5.2 高速Map存取 使用EnumMap来存取Key是Enum的,会有较快的速度,如下是一个网关返回对象Result的的状态属性,是一个枚举类 public static enum Status { SUCCESS(1,"成功"),FAIL(2,"处理失败"),DEGRADE(98,"成功降级"),UNKOWN(99,"未知异常"); private int code; String msg; Status(int code,String msg){ this.code = code; this.msg = msg; } public int getCode() { return code; } public String getMsg() { return msg; } } 考虑到定义微服务网关返回对象,应该尽量使用java自带类型,以避免各种序列化,反序列化问题,网关不返回此枚举值,而是返回msg字段,因此可以构造一个EnumMap,Key为Status枚举类型,Value为Status.msg 属性 Map<Status,String> enumMap =null; private void initEnumMap(){

开工了,新一年,新想法

南楼画角 提交于 2020-02-26 10:25:21
希望新的一年能聚焦事业,同时坚持初心,把技术博客写好,书的第二版写好,尤其是《Java系统性能优化》,增加更多的内容,还有开源Beetl&BeetlSQL做好,尤其是BeetlSQL,今年整一个大版本 来源: oschina 链接: https://my.oschina.net/xiandafu/blog/3167296

SpringBoot集成Beetl模板引擎

自古美人都是妖i 提交于 2020-01-31 07:45:42
之前在学习SpringMVC时,被讲师推荐了国内一款模板引擎Beetl,随后在学习和搭建项目中,大多数使用的都是Beetl,这款引擎虽然有些小众,但其部署和使用方式与当前国外的例如Freemarker之类并无差距,甚至我更衷意于Beetl。 在学习和使用SpringBoot时,我也倾向于使用Beetl作为模板引擎,与SpringMVC的XML配置方式不同,SpringBoot使用注解配置,为此,我查阅了一些资料,作为SpringBoot的学习笔记来记录。 首先,加入Maven依赖: < dependency > < groupId > com.ibeetl </ groupId > < artifactId > beetl </ artifactId > < version > 3.0.11.RELEASE </ version > </ dependency > 然后在config包下创建BeetlConfig配置类: @Configuration public class BeetlConfig { //Beetl配置类 @Bean ( name = "beetlConfigurer" ) public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration ( ) {