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