企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 标签功能 - beetlsql 提供了trim标签函数,用于删除标签体最后一个逗号,这可以帮助拼接条件sql,如 ```markdown updateStatus === update user set -- @trim(){ -- @if(!isEmpty(age){ age = #{age} , -- @} if(!isEmpty(status){ status = #{status}, -- @} -- @} where id = #id# ``` trim 标签可以删除标签体里的最后一个逗号。也可以实现类似mybatis的trim标签的功能,通过传入trim参数prefix,prefixOverrides来完成。具体参考标签api 文档 - pageTag :同page函数,用于pageQuery,如 ```markdown queryNewUser === select -- @pageTag(){ id,name,status -- @} from user ``` 注:可以参考beetl官网 了解如何开发自定义标签以及注册标签函数 - pageIgnoreTag,该标签的作用是在生成分页查询的count语句时,忽略sql语句里的某些内容,如:order by 。pageIgnoreTag与pageTag标签组合使用,组合如下 ```markdown queryNewUser === select -- @pageTag(){ id,name,status -- @} from user -- @pageIgnoreTag(){ order by a.createTime -- @} ``` 因为count语句,无需要排序语句部分,而且,有些数据库,如SQLServer并不支持count语句被排序,因此可以使用pageIgnoreTag来解决夸数据库问题。 而且忽略order by 也会带来性能提升。 - where 该标签复用TrimTag,其工作过程是:判断where 里的sql内容是否为空,如果为空就不输出空字符串,如果不为空则判断sql是否以AND或OR开头,如果是,则去掉。例如模板内容如下: ```markdown queryNewUser === select a.* from user a -- @ where(){ -- @ if(!isEmpty(age){ and a.age=#{age} -- @} -- @ if(!isEmpty(status){ and a.status=#{status} -- @} -- @} ``` 将生成 ```sql select a.* from user a where a.age=? and a.status=? ``` 当然,如果你不用where,也可用where 1=1 来解决,性能并没有不同