问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql数据库客户端工具什么好用

发布网友 发布时间:2022-04-23 08:24

我来回答

2个回答

懂视网 时间:2022-04-30 13:04

  • SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试
  • 数据模型支持Pojo,也支持Map/List这种无模型的模型
  • SQL 模板基于Beetl实现,更容易写和调试,以及扩展
  • 无需注解,自动生成大量内置SQL,轻易完成增删改查功能
  • 支持跨数据库平台,开发者所需工作减少到最小
  • 具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能
  • 内置支持主从数据库,通过扩展,可以支持更复杂的分库分表逻辑
  • 代码例子

    List<User> list = SqlManager.getSQLScript("selectUser").select(paras,User.class);
    User user = SqlManager.getSql(User.class,SELECT_BY_ID).unque(id);

    SQL例子

    selectUser
    ===
     select * from user where 1=1
     @if(user.age==1){
     and age = #user.age#
     @}
    
    selectAll
    ===
     select * from user 
     @use("selectWhere");
    
    selectWhere
    ===
     where age = #age#

    Markdown方式管理

    BeetlSQL集中管理SQL语句,SQL 可以按照业务逻辑放到一个文件里,文件可以按照模块逻辑放到一个目录下。文件格式抛弃了XML格式,采用了Markdown,原因是

  • XML格式过于复杂,书写不方便
  • XML 格式有保留符号,写SQL的时候也不方便,如常用的< 符号 必须转义
  • 目前SQL文件格式如下

    文件一些说明,放在头部可有可无,如果有说明,可以是任意文字
     SQL标示
     ===
     SQL语句 
    
     SQL标示2
     ===
     SQL语句 2

    所有SQL文件建议放到一个db目录,db目录有多个子目录,表示数据库类型,比如db下有common,这是公共SQL语句 还有mysql,oralce。当程序获取SQL语句得时候,先会根据数据库找特定数据库下的sql语句,如果未找到,会寻找common下的。如下代码

    SqlScript sql = SqlManager.getSql("sys.user.update");

    SqlManager 会根据当前使用的数据库,先找db/mysql/sys/user.md 文件,确认是否有update语句,如果没有,则会寻找db/common/sys/user.md

    丰富的数据模型支持

    BeetlSql 适合各种类型的引用,对于大中小型应用,模型通常是Pojo,这样易于维护和与三方系统交互,对于特小型项目,往往不需要严格的模型,表示业务实体通常是Map/List 组合。SQL语句的输入可以是Pojo或者Map,SQL语句执行结果也可以映射到Pojo和Map。

    SqlScript sql = SqlManager.getSql("user.update");
     int result = sql.update(user);
    
     SqlScript sql = SqlManager.getSql("user.select");
     List<User> list = sql.select(user,User.class);
    
     SqlScript sql = SqlManager.getSql("user.select");
     Map paras = new HashMap();
     paras.put("age",11);
     User user = sql.single(paras,User.class);
     //or 
     Map user = sql.single(paras,Map.class);

    SQL 模板基于Beetl实现,更容易写和调试,以及扩展

    SQL语句可以动态生成,基于Beetl语言,这是因为

  • beetl执行效率业界出名的高效 ,因此对于基于模板的动态sql语句,采用beetl非常合适

  • beetl 语法简单易用,可以通过半猜半式的方式实现,杜绝myBatis这样难懂难记得语法。BeetlSql学习曲线几乎没有

  • 利用beetl可以定制定界符号,完全可以将sql模板定界符好定义为数据库sql注释符号,这样容易在数据库中测试,如下也是sql模板(定义定界符为"--" 和 "null",null是回车意思);

    selectByCond
     ===
     select * form user where 1=1
     --if(age!=null)
     age=#age#
     --}
  • beetl 错误提示非常友好,减少写SQL脚本编写维护时间

  • beetl 能容易与本地类交互(直接访问Java类),能执行一些具体的业务逻辑 ,也可以直接在sql模板中写入模型常量,即使sql重构,也会提前解析报错

  • beetl语句易于扩展,提供各种函数,比如分表逻辑函数,跨数据库的公共函数等

  • 无需注解,自动生成大量内置SQL,轻易完成增删改查功能

    BeetlSql虽然不是一个O/R Mapping 工具,但能根据默认约定,生成大量常用SQl而几乎不需要注解(对于oralce,需要注解SeqId(name="seqName")),BeetlSql 根据输入的class,自动能生成如下sql

  • select_by_id : 根据主键查询

  • select_by_template: 将实例变量作为模板查询,如果其变量的属性为空,则不计入查询条件

  • update_by_id: 根据主键更新

  • update_by_template:根据模板更新

  • delete_by_id: 根据主键查询

  • delete_by_template:根据模板查询

  • insert: 自动插入,如果没有主键Annotaion,则会寻找数据库找到主键,并认为是自增主键。总共有如下三种主键Annotation

    SeqId 用于oralce  
     AutoId,用于自增。这是主键默认设置
     AssignId,代码指定主键
  • 支持跨数据库平台,开发者所需工作减少到最小

    如前所述,BeetlSql 可以通过sql文件的管理和搜索来支持跨数据库开发,如前所述,先搜索特定数据库,然后再查找common。另外BeetlSql也提供了一些夸数据库解决方案

  • DbStyle 描述了数据库特性,注入insert语句,翻页语句都通过其子类完成,用户无需操心
  • 提供一些默认的函数扩展,代替各个数据库的函数,如时间和时间操作函数date等
  • 具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能

    BeetlSql可以在执行sql前后执行一系列的Intercetor,从而有机会执行各种扩展和监控,这比已知的通过数据库连接池做Interceptor更加容易。如下Interceptor都是有可能的

  • 监控sql执行较长时间语句,打印并收集(已完成)
  • 对每一条sql语句执行后输出其sql和参数,也可以根据条件只输出特定sql集合的sql。便于用户调试(已完成)
  • 对sql预计解析,汇总sql执行情况(未完成,需要集成第三方sql分析工具)
  • 数据库分表分库逻辑
  • 内置支持主从数据库,通过扩展,可以支持更复杂的分库分表逻辑

    BeetlSql管理数据源,如果只提供一个数据源,则认为读写均操作此数据源,如果提供多个,则默认第一个为写库,其他为读库。用户在开发代码的时候,无需关心操作的是哪个数据库,因为调用sqlScrip 的 select相关api的时候,总是去读取从库,add/update/delete 的时候,总是读取主库。

    sqlScript.insert(user) // 操作主库,如果只配置了一个数据源,则无所谓主从
     sqlScript.selectById(id,User.class) //读取从库

    当然,也可以根据自己具体逻辑来确定如果选择主从库,只需要扩展BeetlSql,这一切对开发者是透明的

    开发者也可以通过在Sql 模板里完成分表逻辑而对使用者透明,如下sql语句

    insert into 
     #text("log"+date())#
     values () ...
    
     注:text函数直接输出表达式到sql语句,而不是输出?。

    log表示按照一定规则分表,table可以根据输入的时间去确定是哪个表

    select * from 
     #text("log"+log.date)#
     where 
    
     注:text函数直接输出表达式到sql语句,而不是输出?。

    同样,根据输入条件决定去哪个表,或者查询所有表

    @ var tables = getLogTables();
     @ for(table in tables){
     select * from #text(table)# 
     @ if(!tableLP.isLast) print("union");
     @} 
     where name = #name#

    BeetlSQL 仍然还在开发过程中,因为业余时间有限,原本计划的1个月开发完毕,已经耽误了数周了,但相信8月底或者9月初就会有一个版本出来,希望beetl粉丝继续支持

     
     
    

    BeetlSQL,简单和强大数据库访问工具

    标签:

    热心网友 时间:2022-04-30 10:12

    常用的MySQL客户端工具如下: dbforge studio for mysql。 一款强大的工具,专门用来自动化和简单化MySQL的工作.它提供了一种简单的方式来探讨和维护现有的数据库,设计复合的SQL语句,以不同的方式查询和操作数据. Navicat。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... mysql可视化工具哪个比较好用? 青岛公积金贷款多长时间放款 Mysql数据库备份工具有哪些? 青岛公积金贷款要交满12个月吗 公积金交够多长时间能贷款 住房公积金交够几年才可以贷款,能贷多少 公积金贷款一般缴纳多久可以使用?有什么要求? 公积金在青岛连续交多久才可以贷款买房 办理公积金多长时间才可以贷款买房? 公积金缴纳满多长时间,才能进行申请贷款? 为什么到了最后,我们都活成了曾经最讨厌的样子 我们的结局会如何 接驳时间是什么意思 为什么我们喜欢“大圆满结局”? 中转联程什么意思? 我们的结局是什么 中转联程什么意思 我们的结局你想到了吗? 如果每个人的最终结局都是死亡,那为什么我们还要活着 汽车票上17:20止,和循环班分别是什么意思 什么软件是专门为mysql开发出来的图形化数据库操作界面? MySQL是什么工具?? mysql管理工具哪个好mysql管理工具哪个好mysql管理工具哪个好_百度知 ... 最好的mysql界面管理工具是什么? mysql数据库管理工具哪个好 mysql工具如何导出全部清单 我的VMWare为啥无法安装macOS 10.12? 求助在VMware Workstation最新12版本的虚拟机上怎么安装mac系统, 有没有好用的mysql数据库设计工具 vmware12怎么安装mac系统 用什么软件可以操作mysql数据库 vmware 虚拟机安装Mac系统!!! 如何在win7 32位系统下通过vmware安装mac_os 怎么微信截图发到QQ上 如何在qq上截图? 截图怎么发到QQ里 我在手机上,不小心把路由器的无线关了,怎么打开? 怎么样把一段截图复制出来发到qq上 路由器wifi关闭后怎么开? windows10 中qq怎么截图?