BeetlSQL 3.21.0 发布,支持 XML 管理 SQL 文件


  • 修复开发模式SQL文件不能自动刷新的BUG
  • 在MarkDown管理SQL的能力外,新增XML文件管理SQL,并提供类似MyBatis的XML语法标签(基于Beetl对XML标签支持)。
<?xml version="1.0" encoding="UTF-8" ?>
<beetlsql>
	<sql id="testIf">
		select * from sys_user where 1=1
		<if test="name!=null">
			and name != #{name}
		</if>
	</sql>
	<sql id="testIsNotEmpty">
		select * from sys_user where 1=1
		<isNotEmpty value="name">
			and name=#{name}
		</isNotEmpty>
	</sql>
	<sql id="testIsBlank">
		select * from sys_user where 1=1
		<isBlank value="name">
			and name='lijz'
		</isBlank>
	</sql>

	<sql id="testForeach">
		select * from sys_user where 1=1 and id in
		<foreach items="ids" var="id,status" open="(" close=")" separator=",">
			#{id}
		</foreach>
	</sql>

	<sql id="testInclude">
		select * from sys_user where 1=1
		<include refid="idList"/>
	</sql>

	<sql id="idList">
		and id = #{id}
	</sql>

	<sql id="testWhere">
		select * from sys_user
		<where>
			and 1=1
		</where>
	</sql>
	<sql id="testTrim">
		select * from sys_user
		<trim prefix="where" prefixOverrides="and | or">
			 name='lijz'
		</trim>
	</sql>

	<sql id="testBind">
		select * from sys_user
		<bind value="id+1" export="newValue"/>
		where id=#{newValue}

	</sql>
</beetlsql>

XML的SQL语句仍然能使用任何Beetl的语法,且定义一个新的XML标签非常容易,以If标签为例子,只需要20行代码

public static class IfTag extends Tag{

		@Override
		public void render() {

			if (!containHtmlAttribute("test")) {
				throw new IllegalArgumentException("缺少 test属性");
			}
			Object value = this.getHtmlAttribute("test");
			if (!(value instanceof Boolean)) {
				throw new IllegalArgumentException("期望test表达式运算结果是boolean类型");
			}
			if ((Boolean) value) {
				this.doBodyRender();
			}
		}
	}

maven

<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>3.21.0-RELEASE</version>
</dependency>


BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不亚于 MyBatis。你不想写 SQL 也好,或者想更好地写 SQL 也好,BeetlSQL 都能满足这要求,目前支持的数据库如下
 

  • 传统数据库:MySQL (包括支持 MySQL 协议的各种数据库), MariaDB ,Oralce ,Postgres (包括支持 Postgres 协议的各种数据库), DB2 , SQL Server ,H2 , SQLite , Derby ,神通,达梦,华为高斯,人大金仓,PolarDB,GBase8s,GreatSQL 等
  • 大数据:HBase,ClickHouse,Cassandar,Hive,GreenPlum
  • 物联网时序数据库:Machbase,TD-Engine,IotDB
  • SQL 查询引擎:Drill,Presto,Druid
  • 内存数据库:ignite,CouchBase


    如下测试使用了最新的 Hibernate,MyBatis,包含了常用的 orm 操作: 多表联合查询映射(complexMapping),直接执行 sql (executeJdbc), 执行模板 sql (executeTemplate), 执行文件中的模板 sql ( File), 内置插入(insert),Query 调用链 (Query), 翻页查询 (pageQuery), 内置主键查询 (selectById), one2Many 自动关联查询 
     
  • Benchmark                         Mode  Cnt     Score   Error   Units
    JMHMain.beetlsqlComplexMapping   thrpt    2   207.914          ops/ms
    JMHMain.beetlsqlExecuteJdbc      thrpt    2   496.413          ops/ms
    JMHMain.beetlsqlExecuteTemplate  thrpt    2   456.779          ops/ms
    JMHMain.beetlsqlFile             thrpt    2   424.703          ops/ms
    JMHMain.beetlsqlInsert           thrpt    2   254.596          ops/ms
    JMHMain.beetlsqlLambdaQuery      thrpt    2   230.682          ops/ms
    JMHMain.beetlsqlOne2Many         thrpt    2   122.058          ops/ms
    JMHMain.beetlsqlPageQuery        thrpt    2   193.937          ops/ms
    JMHMain.beetlsqlSelectById       thrpt    2   421.610          ops/ms
    JMHMain.jdbcExecuteJdbc          thrpt    2  1041.376          ops/ms
    JMHMain.jdbcInsert               thrpt    2   332.804          ops/ms
    JMHMain.jdbcSelectById           thrpt    2  1048.165          ops/ms
    JMHMain.jpaExecuteJdbc           thrpt    2    92.327          ops/ms
    JMHMain.jpaExecuteTemplate       thrpt    2   136.409          ops/ms
    JMHMain.jpaInsert                thrpt    2    61.157          ops/ms
    JMHMain.jpaOne2Many              thrpt    2    98.182          ops/ms
    JMHMain.jpaPageQuery             thrpt    2   124.133          ops/ms
    JMHMain.jpaSelectById            thrpt    2   295.552          ops/ms
    JMHMain.mybatisComplexMapping    thrpt    2    99.312          ops/ms
    JMHMain.mybatisExecuteTemplate   thrpt    2   212.699          ops/ms
    JMHMain.mybatisFile              thrpt    2   166.106          ops/ms
    JMHMain.mybatisInsert            thrpt    2   152.376          ops/ms
    JMHMain.mybatisLambdaQuery       thrpt    2     9.545          ops/ms
    JMHMain.mybatisPageQuery         thrpt    2    68.617          ops/ms
    JMHMain.mybatisSelectById        thrpt    2   251.361          ops/ms
    JMHMain.weedExecuteJdbc          thrpt    2   402.270          ops/ms
    JMHMain.weedExecuteTemplate      thrpt    2   426.764          ops/ms
    JMHMain.weedFile                 thrpt    2   440.994          ops/ms
    JMHMain.weedInsert               thrpt    2   232.100          ops/ms
    JMHMain.weedLambdaQuery          thrpt    2   335.052          ops/ms
    JMHMain.weedPageQuery            thrpt    2   216.811          ops/ms
    JMHMain.weedSelectById           thrpt    2   359.930          ops/ms
    

    阅读文档 源码和例子 在线体验 多库使用 性能测试


相關推薦

2023-08-08

本次调整把BeetlSQL的扩展调整到beetlsql-ext模块下,包含如下子模块 sql-xml:  XML文件支持,允许使用类似MyBatis的XML语法写BeetlSQL的SQL文件 sql-firewall:  SQL防火墙支持,允许对发送到数据库的SQL检查,避免一些常见的SQL错误

2023-02-02

的implementByChild }   I6AWTZ 修复2022年10更新版本导致beetlsql多种数据库库支持的BUG I634BU Spring Boot Starter 打包去掉对commons-dbcp 依赖   I617VE 修复@ResultProvider(AutoJsonMapper.class)注解与自定义AttributeConvert注解冲突 @Data @R

2022-11-01

dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.19.3-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范

2023-08-05

调整SqlIdFactory实现,使用类全路径名作为sqlId标识 调整BeetlSQL+SpringBoot集成方式,支持SpringBoot3 新增MyBatis-Flex,EasyQuery  俩款ORM工具性能测试 maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</art

2022-07-06

dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.15.0-RELEASE</version> </dependency>       BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据

2024-02-08

兼容 MyBatis) LambdaTemplate (高度接近 MyBatis Plus、jOOQ 和 BeetlSQL) @Insert、@Update、@Delete、@Query、@Callable 注解(类似 JPA) 事务支持 支持 5 个事务隔离级别、7 个事务传播行为(与 Spring tx 相同) 提供 TransactionTemplate、Tr

2023-07-06

dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.23.4-RELEASE</version> </dependency>   BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它

2023-03-13

dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.20.4-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范

2024-03-01

其增强组件 [ ] jpa [ ] easy-query [ ] wood [ ] sqltoy [ ] beetlsql [ ] ...... 有想扩展其他orm框架和数据库的可加qq群联系群主 代码示例 以下测试代码请详见hh-vue项目中的hh-vue/hh-admin/src/test/java/com/hh/test/service/impl/FlowTest.java

2024-08-01

简介:Jdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用Jdao,可以在持久层设计上,减少30%甚至50%以上的编程

2024-04-29

插件地址:https://github.com/imyuyu/sqltoy-idea-plugin sqltoy-orm:   gitee: https://gitee.com/sagacity/sagacity-sqltoy   github: https://github.com/sagframe/sagacity-sqltoy 更新内容: Added added support for SqlToy-Plus; sqltoy sql xml inspection sqltoy framew

2024-08-07

。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用gdao,可以在持久层设计上,减少30%甚至50%以上的编程量,同时形成持久层的统一编程规范,减

2023-08-26

模型与底层技术 >>> SQL 审核工具 SQLE 2.2308.0 于今天发布。以下对新版本的 Release Notes 进行详细解读。 文章主要分为以下三部分内容: 一、SQLE 项目介绍 二、新版本主要功能介绍 三、完整的 Release 信息 一、SQLE 

2023-05-09

fastmybatis 2.6.0 发布,本次更新内容如下: @Column 注解新增logicDeleteStrategy枚举属性 PR,可选项有 LogicDeleteStrategy.FIXED_VALUE:固定值策略,notDeleteValue和deleteValue生效(UPDATE t_user SET isdel = 1 WHERE id = 1 AND isdel = 0;) LogicDel