beetl模板使用场景_5分钟 BeetlSQL 快速入门

BeetlSQL是一个强大的数据库访问框架,它提供了内置的CRUD操作,支持OR/Mapping,以及复杂的SQL编写。具备跨数据库平台支持,易于维护和重构,并有丰富的调试手段。通过LambdaQuery和Query链式操作,可以简化数据访问代码。同时,它还支持主从和分库分表集成,以及Markdown管理SQL,解决了其他Dao工具在复杂SQL管理和效率上的问题。
摘要由CSDN通过智能技术生成

企业应用面临的问题 高效编写数据库访问代码 内置CRUD,不需要写SQL

支持OR/Mapping

悲观锁,乐观锁,逻辑删除等辅助支持等

即支持简单的CRUD,也支持数十行,上百行SQL编写

跨数据库平台支持,Oracle,Postgres,Mysql,以及SQLServer,DB2,H2,SQLLite,包括翻页,排序,还有各个厂商特殊语法

易于维护 重构支持

易于修改

DBA友好

丰富的调试手段,详细日志输出

Interceptor支持:具备SQL执行监控,SQL重写

支持POJO或者Map,或者混合模型

BeetlSQL 使用方式 内置API调用完成

Query链式查询

MarkDown 维护复杂SQL

支持POJO,也支持Map或者混合模型

主从支持和Sharding-JDBC分表分库集成

内置API void insert(T entity); void insertBatch(List list); int updateById(T entity); int updateTemplateById(T entity); int deleteById(Object key); T unique(Object key); T single(Object key); T lock(Object key); List all(); List template(T entity); T templateOne(T entity); List execute(String sql,Object... args); int executeUpdate(String sql,Object... args ); Query createQuery(); LambdaQuery createLambdaQuery();

Query 链式操作 Query query = sqlManager.query(User.class); long count = query.andEq("name", "new name") .orEq("id", 1637).limit(1, 10).count();

Java8 LambdaQuery query = sqlManager.lambdaQuery(User.class); User user = query.andEq(User::getId, 1641).single(); user = query.andEq(User::getId, 1642).single();

处理复杂SQL select @pageTag(){ u.*,o.name org_name @} from core_user u left join core_org o on u.org_id=o.id where 1=1 and u.del_flag = 0 @//数据权限,该sql语句功能点 and #function("user.query")# @if(!isEmpty(orgId)){ and u.org_id =#orgId# @} @if(!isEmpty(orgId)){ and u.org_id =#orgId# @} @if(!isEmpty(code)){ and u.code like #"%"+code+"%"# @} @if(!isEmpty(name)){ and u.name like #"%"+name+"%"# @} @if(!isEmpty(state)){ and u.state = #state# @}

超简单的Dao实现 @SqlResource("console.user") public interface UserConsoleDao extends BaseMapper { PageQuery queryByCondtion(PageQuery query); void batchDelUserByIds( List ids); void batchUpdateUserState(List ids, GeneralStateEnum state); List queryUserRole( Long id,Long orgId,Long roleId); } console.user 指明了SQL文件的位置,方法名对应了SQL片段名称。

继承BaseMapper可以获得内置的CRUD等若干现成方法

调试

内置DebugInterceptor,也支持扩展,用于安全监控,性能监控,改写SQL ┏━━━━━ Debug [user.selectUserAndDepartment] ━━━ ┣ SQL: select * from user where 1 = 1 ┣ 参数: [] ┣ 位置: org.beetl.sql.test.QuickTest.main(QuickTest.java:47) ┣ 时间: 23ms ┣ 结果: [3] ┗━━━━━ Debug [user.selectUserAndDepartment] ━━━

完美定位到业务场景发生代码,消费时间,输入输出。

简单支持复杂关系映射查询 selectUserAndDepartment === select * from user where user_id=#userId# @ orm.single({"departmentId":"id"},"Department"); @ orm.many({"id":"userId"},"user.selectRole","Role"); user.selectRole === select r.* from user_role ur left join role r on ur.role_id=r.id where ur.user_id=#userId#

一个用户关联一个部门,关联多个角色

跨数据平台 内置操作都是跨数据库平台,依赖不同的XXDBStyle

提供翻页内置操作,支持不同数据库

MarkDown 管理不同数据库平台的有差异的SQL sql/user.md,

sql/oracle/user.md

sql/mysql/user.md

一句话总结其他Dao工具问题

每个Dao工具都有特定使用范围和历史背景,没有最好的工具,只有适合自己的工具 JPA: 缺少管理复杂SQL能力,OR/Mapping 太强大容易用错。

Spring Data: 主要目的是SQL和NOSQL统一api,应用场景较为简单。其他缺点同JPA

MyBatis: 缺少内置功能,XML管理SQL不方便,出错调试难度大(没有自己的语法体系),OR/Mapping 功能弱

MyBatis-Plus: 国内基于Mybatis封装功能,具备内置功能和Lock,逻辑删除等方便的功能。缺点同BeetlSQL一样,都是国内个人维护。

JOOQ:应用场景较为简单,类似BeetlSQL Query功能,实际使用起来比较复杂

EBean:功能同JPA,比Hiberante弱,比JPA强。缺点同JPA

Spring-JDBCTemplate: 几乎没有提供企业应用需要的任何功能,还需要二次封装才能使用

总结BeetlSQL 混合JPA,MyBatis,JOOQ功能

创立Markdown管理复杂SQL

学习曲线 Hibernate 1个月入门,半年精通

JPA 一周入门,3个月年精通

MyBatis 一周入门,一个月精通

BeetlSQL 3天入门,2周精通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值