下载站

展开
精品推荐
BeetSql下载-数据库管理工具 v3.2.1

BeetSql下载-数据库管理工具 v3.2.1

计算器类大小:55.86MB语言: / 英文 类别:应用软件系统: / WinAll 提供:
应用介绍

软件介绍

BeetSql是一个功能强大、简单易用的数据库管理工具,集Hibernate、Mybatis等多种优点于一身,是一款功能丰富齐全、专业实用的DAO工具,适用于以SQL为中心且又能自动能生成大量常用的SQL的应用,是一款专门针对程序编程、数据库设计的用户而设计研发,非常方便实用;BeetSql这款数据库管理软件,开发效率高、跨多数据库、对DBA友好,同时指出语法高亮、错误提示、模型指出等多种功能,可以帮助用户减少代码数据库代码编辑错误、提高数据库设计和数据库管理效率,是一款不可多得的数据库管理软件。

BeetSql下载,数据库管理工具,数据库

软件功能

BeetlSQL的目标是提供开发高效,维护高效,运行高效的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台

传统数据库:MySQL,MariaDB,Oralce,Postgres,DB2,SQLServer,H2,SQLite,Derby,神通,达梦,华为高斯,人大金仓,PolarDB等

大数据:HBase,ClickHouse,Cassandar,Hive

物联网时序数据库:Machbase,TD-Engine,IotDB

SQL查询引擎:Drill,Presto,Druid

内存数据库:ignite,CouchBase

BeetlSQL不仅仅是简单的类似MyBatis或者是Hibernate,或者是俩着的综合,BeetlSQL远大理想是对标甚至超越SpringData,是实现数据访问统一的框架,无论是传统数据库,还是大数据,还是查询引擎或者时序库,内存数据库。

软件特色

简单易用

简单易用Beetl类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html标签,使得开发CMS系统比较容易

易于整合

Beetl能很容易的与各种web框架整合,如ActFramework,SpringMVC,Struts,Nutz,Jodd,Servlet,JFinal等。支持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。

性能卓越

Beetl远超过主流java模板引擎性能(引擎性能5-6倍与freemaker,2倍于JSP),宏观上通过了优化的渲染引擎,IO的二进制输出,字节码属性访问增强,微观上通过一维数组保存上下文Context,静态文本合并处理,重复使用字节数组来防止java频繁的创建和销毁数组,还使用模板缓存,运行时优化等方法。

开发效率高

无需注解,自动使用大量内置SQL,轻易完成增删改查功能,节省50%的开发工作量。数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型。SQL模板基于Beetl实现,更容易写和调试,以及扩展。可以针对单个表(或者视图)代码生成pojo类和sql模版,甚至是整个数据库。能减少代码编写工作量。

易于维护SQL

以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试。可以自动将sql文件映射为dao接口类。灵活直观的支持支持一对一,一对多,多对多关系映射而不引入复杂的ORMapping概念和技术。具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能

其他特色

内置支持主从数据库支持的开源工具,支持跨数据库平台,开发者所需工作减少到最小,目前跨数据库支持MySql、Postgres、Oracle、SQLServer、h2、SQLite、DB2、CLickhouse、HBase,Cassandar、Hive、TD-Engine,Drill、Presto、ignite、CouchBase等

安装方法

com.ibeetl

beetlsql

2.13.0.RELEASE

com.ibeetl

beetl

${最新版本}

或者依次下载beetlsql,beetl最新版本包放到classpath里

准备工作为了快速尝试BeetlSQL,需要准备一个Mysql数据库或者其他任何beetlsql支持的数据库,然后执行如下sql脚本

CREATETABLE`user`(

`id`int(11)NOTNULLAUTO_INCREMENT,

`name`varchar(64)DEFAULTNULL,

`age`int(4)DEFAULTNULL,

`create_date`datetimeNULLDEFAULTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

编写一个Pojo类,与数据库表对应(或者可以通过SQLManager的gen方法生成此类,参考一下节)

importjava.math.*;

importjava.util.Date;

/*

*

*genbybeetlsql2016-01-06

*/

publicclassUser{

privateIntegerid;

privateIntegerage;

privateStringname;

privateDatecreateDate;

}

主键需要通过注解来说明,如@AutoID,或者@AssignID等,但如果是自增主键,且属性是名字是id,则不需要注解,自动认为是自增主键

代码例子写一个java的Main方法,内容如下

ConnectionSourcesource=ConnectionSourceHelper.getSimple(driver,url,userName,password);

DBStylemysql=newMySqlStyle();

//sql语句放在classpagth的/sql目录下

SQLLoaderloader=newClasspathLoader("/sql");

//数据库命名跟java命名一样,所以采用DefaultNameConversion,还有一个是UnderlinedNameConversion,下划线风格的,

UnderlinedNameConversionnc=newUnderlinedNameConversion();

//最后,创建一个SQLManager,DebugInterceptor不是必须的,但可以通过它查看sql执行情况

SQLManagersqlManager=newSQLManager(mysql,loader,source,nc,newInterceptor[]{newDebugInterceptor()});

//使用内置的生成的sql新增用户,如果需要获取主键,可以传入KeyHolder

Useruser=newUser();

user.setAge(19);

user.setName("xiandafu");

sqlManager.insert(user);

//使用内置sql查询用户

intid=1;

user=sqlManager.unique(User.class,id);

//模板更新,仅仅根据id更新值不为null的列

UsernewUser=newUser();

newUser.setId(1);

newUser.setAge(20);

sqlManager.updateTemplateById(newUser);

//模板查询

Userquery=newUser();

query.setName("xiandafu");

Listlist=sqlManager.template(query);

//Query查询

QueryuserQuery=sqlManager.getQuery(User.class);

Listusers=userQuery.lambda().andEq(User::getName,"xiandafy").select();

//使用user.md文件里的select语句,参考下一节。

Userquery2=newUser();

query.setName("xiandafu");

Listlist2=sqlManager.select("user.select",User.class,query2);

//这一部分需要参考mapper一章

UserDaodao=sqlManager.getMapper(UserDao.class);

Listlist3=dao.select(query2);

BeetlSql2.8.11提供了SQLManagerBuilder来链式创建SQLManager

SQL文件例子通常一个项目还是有少量复杂sql,可能只有5,6行,也可能有上百行,放在单独的sql文件里更容易编写和维护,为了能执行上例的user.select,需要在classpath里建立一个sql目录(在src目录下建立一个sql目录,或者maven工程的resources目录。ClasspathLoader配置成sql目录,参考上一节ClasspathLoader初始化的代码)以及下面的user.md文件,内容如下

select

===

select*fromuserwhere1=1

@if(!isEmpty(age)){

andage=#age#

@}

@if(!isEmpty(name)){

andname=#name#

@}

关于如何写sql模板,会稍后章节说明,如下是一些简单说明。

采用md格式,===上面是sql语句在本文件里的唯一标示,下面则是sql语句。

@和回车符号是定界符号,可以在里面写beetl语句。

"#"是占位符号,生成sql语句得时候,将输出?,如果你想输出表达式值,需要用text函数,或者任何以db开头的函数,引擎则认为是直接输出文本。

isEmpty是beetl的一个函数,用来判断变量是否为空或者是否不存在.

文件名约定为类名,首字母小写。

sql模板采用beetl原因是因为beetl语法类似js,且对模板渲染做了特定优化,相比于mybatis,更加容易掌握和功能强大,可读性更好,也容易在java和数据库之间迁移sql语句

注意:sqlId到sql文件的映射是通过类SQLIdNameConversion来完成的,默认提供了DefaultSQLIdNameConversion实现,即以"."区分最后一部分是sql片段名字,前面转为为文件相对路径,如sqlId是user.select,则select是sql片段名字,user是文件名,beetlsql会在根目录下寻找/user.sql,/user.md,也会找数据库方言目录下寻找,比如如果使用了mysql数据库,则优先寻找/mysql/user.md,/mysql/user.sql然后在找/user.md,/user.sql.

如果sql是test.user.select,则会在/test/user.md(sql)或者/mysql/test/user.md(sql)下寻找“select”片段

代码&sql生成User类并非需要自己写,好的实践是可以在项目中专门写个类用来辅助生成pojo和sql片段,代码如下

publicstaticvoidmain(String[]args){

SqlManagersqlManager=......//同上面的例子

sqlManager.genPojoCodeToConsole("user");

sqlManager.genSQLTemplateToConsole("user");

}

注意:我经常在我的项目里写一个这样的辅助类,用来根据表或者视图生成各种代码和sql片段,以快速开发.

genPojoCodeToConsole方法可以根据数据库表生成相应的Pojo代码,输出到控制台,开发者可以根据这些代码创建相应的类,如上例子,控制台将输出

packagecom.test;

importjava.math.*;

importjava.util.Date;

importjava.sql.Timestamp;

/*

*

*genbybeetlsql2016-01-06

*/

publicclassUser{

privateIntegerid;

privateIntegerage;

privateStringname;

privateDatecreateDate;

}

注意生成属性的时候,id总是在前面,后面依次是类型为Integer的类型,最后面是日期类型,剩下的按照字母排序放到中间。

一旦有了User类,如果你需要写sql语句,那么genSQLTemplateToConsole将是个很好的辅助方法,可以输出一系列sql语句片段,你同样可以赋值粘贴到代码或者sql模板文件里(user.md),如上例所述,当调用genSQLTemplateToConsole的时候,生成如下

sample

===

*注释

select#use("cols")#fromuserwhere#use("condition")#

cols

===

id,name,age,create_date

updateSample

===

`id`=#id#,`name`=#name#,`age`=#age#,`create_date`=#date#

condition

===

1=1

@if(!isEmpty(name)){

and`name`=#name#

@}

@if(!isEmpty(age)){

and`age`=#age#

@}

beetlsql生成了用于查询,更新,条件的sql片段和一个简单例子。你可以按照你的需要copy到sql模板文件里.实际上,如果你熟悉gen方法,你可以直接gen代码和sql到你的工程里,甚至是整个数据库都可以调用genAll来一次生成

注意sql片段的生成顺序按照数据库表定义的顺序显示

使用方法

BeetlSQL说明获得SQLManagerSQLManager是系统的核心,他提供了所有的dao方法。获得SQLManager,可以直接构造SQLManager.并通过单例获取如:

ConnectionSourcesource=ConnectionSourceHelper.getSimple(driver,url,"",userName,password);

DBStylemysql=newMySqlStyle();

//sql语句放在classpagth的/sql目录下

SQLLoaderloader=newClasspathLoader("/sql");

//数据库命名跟java命名一样,所以采用DefaultNameConversion,还有一个是UnderlinedNameConversion,下划线风格的

UnderlinedNameConversionnc=newUnderlinedNameConversion();

//最后,创建一个SQLManager,DebugInterceptor不是必须的,但可以通过它查看sql执行情况

SQLManagersqlManager=newSQLManager(mysql,loader,source,nc,newInterceptor[]{newDebugInterceptor()});

更常见的是,已经有了DataSource,创建ConnectionSource可以采用如下代码

ConnectionSourcesource=ConnectionSourceHelper.getSingle(datasource);

如果是主从Datasource

ConnectionSourcesource=ConnectionSourceHelper.getMasterSlave(master,slaves)

关于使用Sharding-JDBC实现分库分表,参考主从一章

查询API简单查询(自动生成sql)publicTunique(Classclazz,Objectpk)根据主键查询,如果未找到,抛出异常.

publicTsingle(Classclazz,Objectpk)根据主键查询,如果未找到,返回null.

publicListall(Classclazz)查询出所有结果集

publicListall(Classclazz,intstart,intsize)翻页

publicintallCount(Classclazz)总数

(Query)单表查询SQLManager提供Query类可以实现单表查询操作

SQLManagersql=...

Listlist=sql.query(User.class).andEq("name","hi").orderBy("create_date").select();

sql.query(User.class)返回了Query类用于单表查询

如果是Java8,则可以使用lambda表示列名

Listlist1=sql.lambdaQuery(User.class).andEq(User::getName,"hi").orderBy(User::getCreateDate).select();

lamdba()方法返回了一个LamdbaQuery类,列名支持采用lambda。

关于Query操作的具体用法,请参考25.1节

Query对象通常适合在业务操作中使用,而不能代替通常的前端界面查询,前端界面查询推荐使用sqlId来查询

Query提供俩个静态方法filterEmpty,filterNull,这俩个方法返回StrongValue的子类,当andEq等方法的参数是StrongValue子类的时候,将根据条件拼接SQL语句。StrongValue定义如下

publicinterfaceStrongValue{

/**

*value是否是一个有效的值

*返回false则不进行SQL组装

*@return

*/

booleanisEffective();

/**

*获取实际的value值

*@return

*/

ObjectgetValue();

}

如下是一个使用例子

Blogblog=query.andEq(Blog::getTitle,Query.filterNull(null))

.andIn(Blog::getId,Arrays.asList(1,2,3,4,5,6,7))

.andNotIn(Blog::getId,Query.filterEmpty(Collections.EMPTY_LIST))

.andNotEq(Blog::getId,Query.filterEmpty(""))

.andLess(Blog::getId,Query.filterEmpty(2))

.andGreatEq(Blog::getId,Query.filterEmpty(0)).single()

template查询publicListtemplate(Tt)根据模板查询,返回所有符合这个模板的数据库同上,mapper可以提供额外的映射,如处理一对多,一对一

publicTtemplateOne(Tt)根据模板查询,返回一条结果,如果没有找到,返回null

publicListtemplate(Tt,intstart,intsize)同上,可以翻页

publiclongtemplateCount(Tt)获取符合条件的个数

publicListtemplate(Classtarget,Objectparas,longstart,longsize)模板查询,参数是paras,可以是Map或者普通对象

publiclongtemplateCount(Classtarget,Objectparas)获取符合条件个数

翻页的start,系统默认位从1开始,为了兼容各个数据库系统,会自动翻译成数据库习俗,比如start为1,会认为mysql,postgres从0开始(从start-1开始),oralce,sqlserver,db2从1开始(start-0)开始。

然而,如果你只用特定数据库,可以按照特定数据库习俗来,比如,你只用mysql,start为0代表起始纪录,需要配置

OFFSET_START_ZERO=true

这样,翻页参数start传入0即可。

模板查询一般时间较为简单的查询,如用户登录验证

Usertemplate=newUser();

template.setName(...);

template.setPassword(...);

template.setStatus(1);

Useruser=sqlManager.templateOne(template);

通过sqlid查询,sql语句在md文件里publicListselect(StringsqlId,Classclazz,Mapparas)根据sqlid来查询,参数是个map

publicListselect(StringsqlId,Classclazz,Objectparas)根据sqlid来查询,参数是个pojo

publicListselect(StringsqlId,Classclazz)根据sqlid来查询,无参数

publicTselectSingle(Stringid,Objectparas,Classtarget)根据sqlid查询,输入是Pojo,将对应的唯一值映射成指定的target对象,如果未找到,则返回空。需要注意的时候,有时候结果集本身是空,这时候建议使用unique

publicTselectSingle(Stringid,Mapparas,Classtarget)根据sqlid查询,输入是Map,将对应的唯一值映射成指定的target对象,如果未找到,则返回空。需要注意的时候,有时候结果集本身是空,这时候建议使用unique

publicTselectUnique(Stringid,Objectparas,Classtarget)根据sqlid查询,输入是Pojo或者Map,将对应的唯一值映射成指定的target对象,如果未找到,则抛出异常

publicTselectUnique(Stringid,Mapparas,Classtarget)根据sqlid查询,输入是Pojo或者Map,将对应的唯一值映射成指定的target对象,如果未找到,则抛出异常

publicIntegerintValue(Stringid,Objectparas)查询结果映射成Integer,如果找不到,返回null,输入是object

publicIntegerintValue(Stringid,Mapparas)查询结果映射成Integer,如果找不到,返回null,输入是map,其他还有longValue,bigDecimalValue

注意,对于Map参数来说,有一个特殊的key叫着_root,它代表了查询根对象,sql语句中未能找到的变量都会在试图从_root中查找,关于_root对象,可以参考第8章。在Map中使用_root,可以混合为sql提供参数

指定范围查询publicListselect(StringsqlId,Classclazz,Mapparas,intstart,intsize),查询指定范围

publicListselect(StringsqlId,Classclazz,Objectparas,intstart,intsize),查询指定范围

beetlsql默认从1开始,自动翻译为目标数据库的的起始行,如mysql的0,oracle的1

如果你想从0开始,参考11章,配置beetlsql

翻页查询APIpublicvoidpageQuery(StringsqlId,Classclazz,PageQueryquery)

BeetlSQL提供一个PageQuery对象,用于web应用的翻页查询,BeetlSql假定有sqlId和sqlId$count,俩个sqlId,并用这来个来翻页和查询结果总数.如:

queryNewUser

===

select*fromuserorderbyiddesc;

queryNewUser$count

===

selectcount(1)fromuser

对于俩个相似的sql语句,你可以使用use函数,把公共部分提炼出来.

大部分情况下,都不需要2个sql来完成,一个sql也可以,要求使用page函数或者pageTag标签,这样才能同时获得查询结果集总数和当前查询的结果

queryNewUser

===

select

@pageTag(){

a.*,b.namerole_name

@}

fromuseraleftjoinb...

如上sql,会在pageQuery查询的时候转为俩条sql语句

selectcount(1)fromuseraleftjoinb...

selecta.*,b.namerole_namefromuseraleftjoinb...

如果字段较多,为了输出方便,也可以使用pageTag,字段较少,用page函数也可以.,具体参考pageTag和page函数说明.翻页代码如下

//从第一页开始查询,无参数

PageQueryquery=newPageQuery();

sql.pageQuery("user.queryNewUser",User.class,query);

System.out.println(query.getTotalPage());

System.out.println(query.getTotalRow());

System.out.println(query.getPageNumber());

Listlist=query.getList();

PageQuery对象也提供了orderBy属性,用于数据库排序,如"iddesc"

跨数据库支持如果你打算使用PageQuery做翻页,且只想提供一个sql语句+page函数,那考虑到跨数据库,应该不要在这个sql语句里包含排序,因为大部分数据库都不支持.page函数生成的查询总数sql语句,因为包含了oderby,在大部分数据库都是会报错的的,比如:selectcount(1)formuserorderbyname,在sqlserver,mysql,postgresql都会出错,oracle允许这种情况,因此,如果你要使用一条sql语句+page函数,建议排序用PageQuery对象里有排序属性oderBy,可用于排序,而不是放在sql语句里.

2.8版本以后也提供了标签函数pageIgnoreTag,可以用在翻页查询里,当查询用作统计总数的时候,会忽略标签体内容,如

selectpage("*")fromxxx

@pageIgnoreTag(){

orderbyid

@}

如上语句,在求总数的时候,会翻译成selectcount(1)fromxxx

如果你不打算使用PageQuery+一条sql的方式,而是用两条sql来分别翻页查询和统计总数,那无所谓

或者你直接使用select带有起始和读取总数的接口,也没有关系,可以在sql语句里包含排序

如果PageQuery对象的totalRow属性大于等于0,则表示已经知道总数,则不会在进行求总数查询

更新API添加,删除和更新均使用下面的API

自动生成sqlpublicvoidinsert(Objectparas)插入paras到paras关联的表

publicvoidinsert(Objectparas,booleanautoAssignKey)插入paras到paras对象关联的表,并且指定是否自动将数据库主键赋值到paras里,适用于对于自增或者序列类数据库产生的主健

publicvoidinsertTemplate(Objectparas)插入paras到paras关联的表,忽略为null值或者为空值的属性

publicvoidinsertTemplate(Objectparas,booleanautoAssignKey)插入paras到paras对象关联的表,并且指定是否自动将数据库主键赋值到paras里,忽略为null值或者为空值的属性,调用此方法,对应的数据库必须主键自增。

publicvoidinsert(Classclazz,Objectparas)插入paras到clazz关联的表

publicvoidinsert(Classclazz,Objectparas,KeyHolderholder),插入paras到clazz关联的表,如果需要主键,可以通过holder的getKey来获取,调用此方法,对应的数据库必须主键自增

publicintinsert(Classclazz,Objectparas,booleanautoAssignKey)插入paras到clazz关联的表,并且指定是否自动将数据库主键赋值到paras里,调用此方法,对应的数据库必须主键自增。

publicintupdateById(Objectobj)根据主键更新,所有值参与更新

publicintupdateTemplateById(Objectobj)根据主键更新,属性为null的不会更新

publicintupdateBatchTemplateById(Classclazz,Listlist)批量根据主键更新,属性为null的不会更新

publicintupdateTemplateById(Classclazz,Mapparas)根据主键更新,组件通过clazz的annotation表示,如果没有,则认为属性id是主键,属性为null的不会更新。

publicint[]updateByIdBatch(Listlist)批量更新

publicvoidinsertBatch(Classclazz,Listlist)批量插入数据

publicvoidinsertBatch(Classclazz,Listlist,booleanautoAssignKey)批量插入数据,如果数据库自增主键,获取。

publicintupsert(Objectobj),更新或者插入一条。先判断是否主键为空,如果为空,则插入,如果不为空,则从数据库按照此主健取出一条,如果未取到,则插入一条,其他情况按照主键更新。插入后的自增或者序列主健

intupsertByTemplate(Objectobj)同上,按照模板插入或者更新。

通过sqlid更新(删除)publicintinsert(StringsqlId,Objectparas,KeyHolderholder)根据sqlId插入,并返回主键,主键id由paras对象所指定,调用此方法,对应的数据库表必须主键自增。

publicintinsert(StringsqlId,Objectparas,KeyHolderholder,StringkeyName)同上,主键由keyName指定

publicintinsert(StringsqlId,Mapparas,KeyHolderholder,StringkeyName),同上,参数通过map提供

publicintupdate(StringsqlId,Objectobj)根据sqlid更新

publicintupdate(StringsqlId,Mapparas)根据sqlid更新,输出参数是map

publicint[]updateBatch(StringsqlId,Listlist)批量更新

publicint[]updateBatch(StringsqlId,Map[]maps)批量更新,参数是个数组,元素类型是map

直接执行SQL模板直接执行sql模板语句一下接口sql变量是sql模板

publicListexecute(Stringsql,Classclazz,Objectparas)

publicListexecute(Stringsql,Classclazz,Mapparas)

publicintexecuteUpdate(Stringsql,Objectparas)返回成功执行条数

publicintexecuteUpdate(Stringsql,Mapparas)返回成功执行条数

直接执行JDBCsql语句查询publicListexecute(SQLReadyp,Classclazz)SQLReady包含了需要执行的sql语句和参数,clazz是查询结果,如

Listlist=sqlManager.execute(newSQLReady("select*fromuserwherename=?andage=?","xiandafu",18),User.class);)

publicPageQueryexecute(SQLReadyp,Classclazz,PageQuerypageQuery)

StringjdbcSql="select*fromuserorderbyid";

PageQueryquery=newPageQuery(1,20);

query=sql.execute(newSQLReady(jdbcSql),User.class,query);

注意:sql参数通过SQLReady传递,而不是PageQuery。

更新publicintexecuteUpdate(SQLReadyp)SQLReady包含了需要执行的sql语句和参数,返回更新结果

publicint[]executeBatchUpdate(SQLBatchReadybatch)批量更新(插入)

直接使用ConnectionpublicTexecuteOnConnection(OnConnectioncall),使用者需要实现onConnection方法的call方法,如调用存储过程

Listusers=sql.executeOnConnection(newOnConnection(){

@Override

publicListcall(Connectionconn)throwsSQLException{

CallableStatementcstmt=conn.prepareCall("{?=callmd5(?)}");

ResultSetrs=callableStatement.executeQuery();

returnthis.sqlManagaer.getDefaultBeanProcessors().toBeanList(rs,User.class);

}

});

其他强制使用主或者从如果为SQLManager提供多个数据源,默认第一个为主库,其他为从库,更新语句将使用主库,查询语句使用从库库

可以强制SQLManager使用主或者从

publicvoiduseMaster(DBRunnerf)DBRunner里的beetlsql调用将使用主数据库库

publicvoiduseSlave(DBRunnerf)DBRunner里的beetlsql调用将使用从数据库库

对于通常事务来说只读事务则从库,写操作事务则总是主库。关于主从支持,参考17章

生成Pojo代码和SQ片段用于开发阶段根据表名来生成pojo代码和相应的sql文件

genPojoCodeToConsole(Stringtable),根据表名生成pojo类,输出到控制台.

genSQLTemplateToConsole(Stringtable),生成查询,条件,更新sql模板,输出到控制台。

genPojoCode(Stringtable,Stringpkg,StringsrcPath,GenConfigconfig)根据表名,包名,生成路径,还有配置,生成pojo代码

genPojoCode(Stringtable,Stringpkg,GenConfigconfig)同上,生成路径自动是项目src路径,或者src/main/java(如果是maven工程)

genPojoCode(Stringtable,Stringpkg),同上,采用默认的生成配置

genSQLFile(Stringtable),同上,但输出到工程,成为一个sql模版,sql模版文件的位置在src目录下,或者src/main/resources(如果是maven)工程.

genALL(Stringpkg,GenConfigconfig,GenFilterfilter)生成所有的pojo代码和sql模版,

genBuiltInSqlToConsole(Classz)根据类来生成内置的增删改查sql语句,并打印到控制台

sql.genAll("com.test",newGenConfig(),newGenFilter(){

publicbooleanaccept(StringtableName){

if(tableName.equalsIgnoreCase("user")){

returntrue;

}else{

returnfalse;

}

//returnfalse

}

});

第一个参数是pojo类包名,GenConfig是生成pojo的配置,GenFilter是过滤,返回true的才会生成。如果GenFilter为null,则数据库所有表都要生成

警告必须当心覆盖你掉你原来写好的类和方法,不要轻易使用genAll,如果你用了,最好立刻将其注释掉,或者在genFilter写一些逻辑保证不会生成所有的代码好sql模板文件

悲观锁lockSQLManager提供如下API实现悲观锁,clazz对应的数据库表,主键为pk的记录实现悲观锁

publicTlock(Classclazz,Objectpk)

相当于sql语句

select*fromxxxwhereid=?forupdate

lock方法必须用在事务环境里才能生效。事务结束后,自动释放

BeetSql下载,数据库管理工具,数据库

Tags:BeetSql下载,数据库管理工具,数据库

应用推荐查看更多
热门下载查看更多
精选应用
点击查看更多
专题合集查看更多
热门专题查看更多
友情链接0投诉联系:ichaoinc@gmail.com