ACT 与 Beetlsql 的搭配使用 一

Stella981
• 阅读 713

扩展课程

第一章 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.

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

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

ACT 与 Beetlsql 的搭配使用 一

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

ACT 与 Beetlsql 的搭配使用 一

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

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)里了:

ACT 与 Beetlsql 的搭配使用 一

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

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

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

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

ACT 与 Beetlsql 的搭配使用 一

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这