ACT 与 Beetlsql 的搭配使用 一

扩展课程

第一章 ACT 与 Beetlsql 的搭配使用.

一. 什么是 BeetlSQL

BeetlSQL 是国内知名开源作者闲大赋的最新力作. 主要的目标是代替 Mybatis . 相比 Mybatis 优势在于:

  • MarkDown 维护复杂 SQL,比用 XML 文档里写 SQL 前进一大步
  • 内置 CRUD 等常用 API
  • Query 链式查询,强烈推荐使用的新姿势!
  • 支持 POJO,也支持 Map 或者混合模型
  • 主从支持和 Sharding-JDBC 分表分库集成

入门BLOG: https://my.oschina.net/xiandafu/blog/1791215

二. 为什么选择ACT呢

原因是: ACTION! ACTION! ACTION!

三. ACT与BeetlSQL的搭建

  1. 首先提醒您 MK 一个地址:https://github.com/act-gallery , 这是 ACT 官方示例的 [集中营] ,请记住,我不会提醒你第2次的! 我们找到这个 todo-beetlsql 项目.
  2. 现在你可以把它 clone下来了: https://github.com/act-gallery/todo-beetlsql.git
  3. 打开项目了吗?打开了请继续.

四 ACT + BeetlSQL + MAPPER 打开姿势

我私下叫这个姿势为 MM(mapper + markdown) 姿势! KE:(解析一下:就是类似 Mybatis 在 XML 写 SQL 的方式来实现 ORM.

项目打开了吧,福喜您,你已经学会了.是不是很简单?很惊喜?

好吧,别浪!少年,跟紧我的脚步! 让我们先看一下项目的整体结构:

注意到了吗? TodoItem 这个实体类对应了 /resources/sql/todoitem.md 映射文件. 打开 todoitem.md 你会发现只有整洁的3行代码:

这是什么意思呢?聪明如您,也许已经把它翻译成:

call: selectAll() = select * from todo_item ,对吧?

您留意到 TodoItemMapper 这个接口类吗? 里面仅有一行:

public List<TodoItem> selectAll();

如您所料,它与 .md 文件里定义的方法名是一致的,这就是MM姿势! 而真实的项目开发,TodoItemMapper接口里会有众多方法,所以 TodoItemMapper 这个接口文件是有存在的意义的.

当然示例项目为了简便明了,我们直接在 TodoItem 实体类里写下了一个空接口:

public interface Mapper extends BaseMapper<TodoItem> {}

接着,我们在 Todo 文件, 实际上这是一个综合体,它即是一个 Controller,也是一个Service 还是一个 AppStart, 这同样是了展示ACT的便利与强大! 实际的项目里我推荐你还是分层写代码的好.以结上司之欢心,谋吾等码农之福利!

如您所见,我们把实体类里定义的 Mapper 注入到 Todo 文件(Controller)里了:

如您所见 mapper. 会出来许多智能api方法,这就是上文提到的优势,BeetlSql 内置了 CRUD 等常用 API.

而实际的项目里,我们会注入 TodoItemMapper 这个独立的接口类,并且调用 selectAll() 之类的方法去实现更多复杂的功能开发.

到此为止,您可以运行项目,看一下示例效果. 但是... 但是... 但是... 正如: > [宏颜获水] 这成语所言, Ai的道路上面,也有我们预想不到的曲折!

此时,此刻您需要先在 h2 数据库里创建 todo_item 数据表并填上你喜欢的数据,之后再运行: http://localhost:5460/list, 得到如下页面:

好了,下课了. 是时侯来一盘<<王者>>了. 记住:猥琐发育别浪!

下节预告: BeetlSQL新姿势--链式查询,相信我,这才是未来! https://my.oschina.net/liton/blog/3072482

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang