BeetlSQL 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
BeetlSQL 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
BeetlSQL 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 闲大赋
适用人群 未知
收录时间 2015-08-26

软件简介

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

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

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

BeetlSQL3 性能测试

测试维度是ops/ms,每毫秒的调用次数

Benchmark                         Mode  Cnt     Score     Error   Units
JMHMain.beetlsqlComplexMapping   thrpt    5   212.378 ±  26.222  ops/ms
JMHMain.beetlsqlExecuteJdbc      thrpt    5   428.713 ±  66.192  ops/ms
JMHMain.beetlsqlExecuteTemplate  thrpt    5   374.943 ±  20.214  ops/ms
JMHMain.beetlsqlFile             thrpt    5   433.001 ±  65.448  ops/ms
JMHMain.beetlsqlInsert           thrpt    5   236.244 ± 112.102  ops/ms
JMHMain.beetlsqlLambdaQuery      thrpt    5   247.289 ±  19.310  ops/ms
JMHMain.beetlsqlOne2Many         thrpt    5   108.132 ±  10.934  ops/ms
JMHMain.beetlsqlPageQuery        thrpt    5   203.751 ±   9.395  ops/ms
JMHMain.beetlsqlSelectById       thrpt    5   393.437 ±  15.685  ops/ms
JMHMain.jdbcExecuteJdbc          thrpt    5  1083.310 ±  80.947  ops/ms
JMHMain.jdbcInsert               thrpt    5   308.341 ± 231.163  ops/ms
JMHMain.jdbcSelectById           thrpt    5  1019.370 ±  92.946  ops/ms
JMHMain.jpaExecuteJdbc           thrpt    5    94.600 ±  15.624  ops/ms
JMHMain.jpaExecuteTemplate       thrpt    5   133.017 ±  12.954  ops/ms
JMHMain.jpaInsert                thrpt    5    81.232 ±  26.971  ops/ms
JMHMain.jpaOne2Many              thrpt    5   101.506 ±  11.301  ops/ms
JMHMain.jpaPageQuery             thrpt    5   117.748 ±   4.512  ops/ms
JMHMain.jpaSelectById            thrpt    5   335.945 ±  27.186  ops/ms
JMHMain.mybatisComplexMapping    thrpt    5   102.402 ±  11.129  ops/ms
JMHMain.mybatisExecuteTemplate   thrpt    5   202.619 ±  16.978  ops/ms
JMHMain.mybatisFile              thrpt    5   151.151 ±   4.251  ops/ms
JMHMain.mybatisInsert            thrpt    5   141.469 ±  43.092  ops/ms
JMHMain.mybatisLambdaQuery       thrpt    5    15.558 ±   1.481  ops/ms
JMHMain.mybatisPageQuery         thrpt    5    63.705 ±   7.592  ops/ms
JMHMain.mybatisSelectById        thrpt    5   197.130 ±  19.461  ops/ms
JMHMain.weedExecuteJdbc          thrpt    5   416.941 ±  22.256  ops/ms
JMHMain.weedExecuteTemplate      thrpt    5   439.266 ±  57.130  ops/ms
JMHMain.weedFile                 thrpt    5   477.561 ±  37.926  ops/ms
JMHMain.weedInsert               thrpt    5   231.444 ±  92.598  ops/ms
JMHMain.weedLambdaQuery          thrpt    5   422.707 ±  64.716  ops/ms
JMHMain.weedPageQuery            thrpt    5   246.018 ±  18.724  ops/ms
JMHMain.weedSelectById           thrpt    5   380.348 ±  20.968  ops/ms

代码示例

例子1,内置方法,无需写SQL完成常用操作

UserEntity user  = sqlManager.unique(UserEntity.class,1);

user.setName("ok123");
sqlManager.updateById(user);

UserEntity newUser = new UserEntity();
newUser.setName("newUser");
newUser.setDepartmentId(1);
sqlManager.insert(newUser);

输出日志友好,可反向定位到调用的代码

┏━━━━━ Debug [user.selectUserAndDepartment] ━━━
┣ SQL:     select * from user where 1 = 1 and id=?
┣ 参数:     [1]
┣ 位置:     org.beetl.sql.test.QuickTest.main(QuickTest.java:47)
┣ 时间:     23ms
┣ 结果:     [1]
┗━━━━━ Debug [user.selectUserAndDepartment] ━━━

例子2 使用SQL

String sql = "select * from user where id=?";
Integer id  = 1;
SQLReady sqlReady = new SQLReady(sql,new Object[id]);
List<UserEntity> userEntities = sqlManager.execute(sqlReady,UserEntity.class);
//Map 也可以作为输入输出参数
List<Map> listMap =  sqlManager.execute(sqlReady,Map.class);

例子3 使用模板SQL

String sql = "select * from user where department_id=#{id} and name=#{name}";
UserEntity paras = new UserEntity();
paras.setDepartmentId(1);
paras.setName("lijz");
List<UserEntity> list = sqlManager.execute(sql,UserEntity.class,paras);

String sql = "select * from user where id in ( #{join(ids)} )";
List list = Arrays.asList(1,2,3,4,5); Map paras = new HashMap();
paras.put("ids", list);
List<UserEntity> users = sqlManager.execute(sql, UserEntity.class, paras);

例子4 使用Query类

支持重构

LambdaQuery<UserEntity> query = sqlManager.lambdaQuery(UserEntity.class);
List<UserEntity> entities = query.andEq(UserEntity::getDepartmentId,1)
                    .andIsNotNull(UserEntity::getName).select();

例子5 把数十行SQL放到sql文件里维护

//访问user.md#select
SqlId id = SqlId.of("user","select");
Map map = new HashMap();
map.put("name","n");
List<UserEntity> list = sqlManager.select(id,UserEntity.class,map);

例子6 复杂映射支持

支持像mybatis那样复杂的映射

  • 自动映射
@Data
@ResultProvider(AutoJsonMapper.class)
 public static class MyUserView {
        Integer id;
        String name;
        DepartmentEntity dept;
 }

  • 配置映射,比MyBatis更容易理解,报错信息更详细
{
	"id": "id",
	"name": "name",
	"dept": {
		"id": "dept_id",
		"name": "dept_name"
	},
	"roles": {
		"id": "r_id",
		"name": "r_name"
	}
}

例子7 最好使用mapper来作为数据库访问类

@SqlResource("user") /*sql文件在user.md里*/
public interface UserMapper extends BaseMapper<UserEntity> {

    @Sql("select * from user where id = ?")
    UserEntity queryUserById(Integer id);

    @Sql("update user set name=? where id = ?")
    @Update
    int updateName(String name,Integer id);

    @Template("select * from user where id = #{id}")
    UserEntity getUserById(Integer id);

    @SpringData/*Spring Data风格*/
    List<UserEntity> queryByNameOrderById(String name);

    /**
     * 可以定义一个default接口
     * @return
     */
     default  List<DepartmentEntity> findAllDepartment(){
        Map paras = new HashMap();
        paras.put("exlcudeId",1);
        List<DepartmentEntity> list = getSQLManager().execute("select * from department where id != #{exlcudeId}",DepartmentEntity.class,paras);
        return list;
    }


    /**
     * 调用sql文件user.md#select,方法名即markdown片段名字
     * @param name
     * @return
     */
     List<UserEntity> select(String name);


    /**
     * 翻页查询,调用user.md#pageQuery
     * @param deptId
     * @param pageRequest
     * @return
     */
    PageResult<UserEntity>  pageQuery(Integer deptId, PageRequest pageRequest);
	
    @SqlProvider(provider= S01MapperSelectSample.SelectUserProvider.class)
    List<UserEntity> queryUserByCondition(String name);

    @SqlTemplateProvider(provider= S01MapperSelectSample.SelectUs
    List<UserEntity> queryUserByTemplateCondition(String name);

    @Matcher /*自己定义个Matcher注解也很容易*/
    List<UserEntity> query(Condition condition,String name);
}

你看到的这些用在Mapper上注解都是可以自定义,自己扩展的

例子8 使用Fetch 注解

可以在查询后根据Fetch注解再次获取相关对象,实际上@FetchOne和 @FetchMany是自定义的,用户可自行扩展

    @Data
    @Table(name="user")
    @Fetch
    public static class UserData {
        @Auto
        private Integer id;
        private String name;
        private Integer departmentId;
        @FetchOne("departmentId")
        private DepartmentData dept;
    }

    /**
     * 部门数据使用"b" sqlmanager
     */
    @Data
    @Table(name="department")
    @Fetch
    public static class DepartmentData {
        @Auto
        private Integer id;
        private String name;
        @FetchMany("departmentId")
        private List<UserData> users;
    }

例子9 不同数据库切换

可以自行扩展ConditionalSQLManager的decide方法,来决定使用哪个SQLManager

        SQLManager a = SampleHelper.init();
        SQLManager b = SampleHelper.init();
        Map<String, SQLManager> map = new HashMap<>();
        map.put("a", a);
        map.put("b", b);
        SQLManager sqlManager = new ConditionalSQLManager(a, map);

        //不同对象,用不同sqlManager操作,存入不同的数据库
        UserData user = new UserData();
        user.setName("hello");
        user.setDepartmentId(2);
        sqlManager.insert(user);

        DepartmentData dept = new DepartmentData();
        dept.setName("dept");
        sqlManager.insert(dept);

使用注解 @TargetSQLManager来决定使用哪个SQLManger

    @Data
    @Table(name = "department")
    @TargetSQLManager("b")
    public static class DepartmentData {
        @Auto
        private Integer id;
        private String name;
    }

例子10 如果想给每个sql语句增加一个sqlId标识

这样好处是方便数据库DBA与程序员沟通

 public static class SqlIdAppendInterceptor implements  Interceptor{
        @Override
        public void before(InterceptorContext ctx) {
            ExecuteContext context = ctx.getExecuteContext();
            String jdbcSql = context.sqlResult.jdbcSql;
            String info  = context.sqlId.toString();
            //为发送到数据库的sql增加一个注释说明,方便数据库dba能与开发人员沟通
            jdbcSql = "/*"+info+"*/\n"+jdbcSql;
            context.sqlResult.jdbcSql = jdbcSql;
        }
 }

例子11 代码生成框架

可以使用内置的代码生成框架生成代码何文档,也可以自定义的,用户可自行扩展SourceBuilder类

	List<SourceBuilder> sourceBuilder = new ArrayList<>();
	SourceBuilder entityBuilder = new EntitySourceBuilder();
	SourceBuilder mapperBuilder = new MapperSourceBuilder();
	SourceBuilder mdBuilder = new MDSourceBuilder();
	//数据库markdown文档
	SourceBuilder docBuilder = new MDDocBuilder();

	sourceBuilder.add(entityBuilder);
	sourceBuilder.add(mapperBuilder);
	sourceBuilder.add(mdBuilder);
	sourceBuilder.add(docBuilder);
    SourceConfig config = new SourceConfig(sqlManager,sourceBuilder);
   //只输出到控制台
	ConsoleOnlyProject project = new ConsoleOnlyProject();
	String tableName = "USER";
	config.gen(tableName,project);

例子13 定义一个Beetl函数

        GroupTemplate groupTemplate = groupTemplate();
        groupTemplate.registerFunction("nextDay",new NextDayFunction());

        Map map = new HashMap();
        map.put("date",new Date());
        String sql = "select * from user where create_time is not null and create_time<#{nextDay(date)}";
        List<UserEntity> count = sqlManager.execute(sql,UserEntity.class,map);

nextDay函数是一个Beetl函数,非常容易定义,非常容易在sql模板语句里使用

   public static class NextDayFunction implements Function {

        @Override
        public Object call(Object[] paras, Context ctx) {
            Date date = (Date) paras[0];
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.DAY_OF_YEAR, 1); // 今天+1天
            return c.getTime();
        }
    }

例子14 更多可扩展的例子

根据ID或者上下文自动分表,toTable是定义的一个Beetl函数,

    static final String USER_TABLE="${toTable('user',id)}";
    @Data
    @Table(name = USER_TABLE)
    public static class MyUser {
        @AssignID
        private Integer id;
        private String name;
    }

定义一个Jackson注解,@Builder是注解的注解,表示用Builder指示的类来解释执行,可以看到BeetlSQL的注解可扩展性就是来源于@Build注解

@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD, ElementType.FIELD})
@Builder(JacksonConvert.class)
public @interface Jackson {

}

定义一个@Tenant 放在POJO上,BeetlSQL执行时候会给SQL添加额外参数,这里同样使用了@Build注解


/**
 * 组合注解,给相关操作添加额外的租户信息,从而实现根据租户分表或者分库
 */
@Retention(RetentionPolicy.RUNTIM@
@Target(value = {ElementType.TYPE})
@Builder(TenantContext.class)
public @interface Tenant {

}

使用XML而不是JSON作为映射

@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.TYPE})
@Builder(ProviderConfig.class)
public @interface XmlMapping {
    String path() default "";
}

参考源码例子 PluginAnnotationSample了解如何定义自定的注解,实际上BeetlSQL有一半的注解都是通过核心注解扩展出来的

BeetlSQL的架构

除了SQLManager和ClassAnnoations,任何一部分都可以扩展

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(33)
发表了资讯
06/13 10:15

BeetlSQL 3.14.4 发布,流行 Java ORM 工具

Query,LambdaQuery类 增加asTable和virtual 方法,使得原生SQL语句也可以支持分表 使用“Java.specification.version” 获取新版本 solon插件升级到1.7.5 代码生成某些属性生成的方法出错的Bug修复 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.14.4-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效...

2
2
发表了资讯
04/11 10:04

BeetlSQL 3.14.0 发布,流行 Java ORM 工具

本次发布@最后夏天,@慕容 提出的建议 mapper的defaut method调用,支持jdk7,jkd8,jdk9,jdk10 ,jdk11,jdk12,jdk13,jdk14,jdk15,jdk16,jdk17 逻辑删除支持 ,内置查询(SQLManager,或者Query)的时候考虑逻辑删除字段,这需要配置sqlManager.setQueryLogicDeleteEnable 才能生效。 单元测试代码位置 @Test   public void testLogicDelete(){     ProductOrder order = new ProductOrder();     order.setCreateDate(new ...

8
6
发表了资讯
03/28 08:21

BeetlSQL 3.13.1 发布,流行 Java ORM 工具

本次发布和并了@luo0412和@最后的夏天 提交的PR 新增.editconfig,参考 https://editorconfig.org 代码生成md数据库说明文档,文件名多了一个"." 修复3.13 版本,Spring Boot 配置interceptor 无效的问题 dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.13.1-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效...

2
3
发表了资讯
03/14 16:55

BeetlSQL 3.13.0 发布,新的多库支持方式

新增 ThreadLocalSQLManager 类,让开发者指定使用哪个SQLManager, 一个使用例子 beetlsql.sqlManagers = proxySqlManager beetlsql.proxySqlManager.threadlocal=sqlManager1,sqlManager2 beetlsql.proxySqlManager.basePackage=org.beetl.sql.springboot.threadlocal beetlsql.sqlManager1.ds=ds1 beetlsql.sqlManager1. beetlsql.sqlManager2.ds=ds2,ds2-slave 如上配置了ds1和ds2,ds2还有一个从库ds2-slave. 所有...

2
3
发表了资讯
02/07 09:53

BeetlSQL 3.12.11 发布,流行的 Java ORM 工具

lombok的依赖方式调整为provided 增加注解@Date2Long,用于把日期类型自动转为Long 视频直播功能调整 @Data @Table(name="order_log") public class OrderLog {   @AssignID   Integer orderId;   Integer age;   @Date2Long   Date createTime; } <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.12.11-RELEASE</version> </dependency> BeetlSQL 自主...

3
4
发表了资讯
01/06 12:46

BeetlSQL 3.12.8 发布,流行的 Java ORM 工具

修复开发模式下,某些情况下SQL文件的更新时间判断有误,导致及时文件没修改每次都更新的的Bug 代码生成模块,生成的sql文件里增加一个json映射配置。可以用此来编写复杂映射,无需从头新写 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.12.8-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问...

2
6
发表了资讯
2021/12/19 21:18

BeetlSQL 3.12.5 发布,流行的 Java ORM 工具

修复了最近一系列调整带来的Bug。建议升级到此版本 修复重用输出流导致Where标签无法正常使用问题 修复了JsonConfig,自定义映射中几种未考虑到的映射规则的Bug 修复了UpdateTemplateById中如果有@Version注解,生成的SQL的Bug 代码生成,名称为Dao改为Mapper <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.12.5-RELEASE</version> </dependency> BeetlSQL 自主...

2
3
发表了资讯
2021/11/29 13:55

BeetlSQL 3.12.2 发布,流行的 Java DAO 工具

修复了合并社区提交带来的翻页Bug,影响sqlserver的jdbc sql的翻页功能 模板SQL生成使用了SoftReferenceWriter,性能略有提高 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.12.2-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不...

0
4
发表了资讯
2021/11/19 10:16

BeetlSQL 3.12.0 发布,流行的 Java DAO 工具

本次发布了2.0升级到3.0,遗漏的强制使用数据源功能,此版本补上和增强此功能 SQLMannager默认更新操作走主库,查询操作走从从库,如果想改变规则,可以从新实现ConnectionSource,或者使用forceDataSource强制使用某一个数据库 SQLMannager提供了forceDataSource(DBRunner)接口来强制使用某个数据源操作,比如主从库,默认查询走从库,你可以强制查询走主库,或者某个更新操作,想操作从库而不是主库 //强制使用主库查询 U...

2
6
发表了资讯
2021/11/17 10:25

BeetlSQL 3.11.3 发布,流行的 Java DAO 工具

本次修复建议升级 修复了BeetlSQL在开发模式下,修改SQL文件,不自动生效的BUG <dependency> <groupId>com.ibeetlgroupId> <artifactId>beetlsqlartifactId> <version>3.11.3-RELEASEversion> dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不亚于 MyBatis。你不想写 SQL 也好,或者想更好地写 SQ...

1
2
发表了资讯
2021/11/09 09:57

BeetlSQL 3.11.2 发布,流行的 Java DAO 工具

修复内置的insertTemplate方法,keywordHandler没有启用的Bug Beetl版本更新到3.8.1.RELEASE solon 集成最新版本1.5.50 修复 3.9 版本以来 ID 生成器没有自动注册的 Bug <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.11.2-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,...

6
7
发表了资讯
2021/10/28 10:17

BeetlSQL 3.11.1 发布,流行的 Java DAO 工具

修复 3.9 版本 以来 BeanProcessor 引入 TemporalAcceptType 带来的空指针错误 修复 3.9 版本以来 ID 生成器没有自动注册的 Bug <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.11.1-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,...

1
4
发表了资讯
2021/10/25 10:09

BeetlSQL 3.11.0 发布,流行的 Java DAO 工具

本次发布新增了对南大通用GBase8s数据库,万里开源数据库GreatSQL的支持,这俩个都是国产商用级别高性能数据库 增加了GBase8s和GreatSQL 国产优秀数据库支持 Query类修复delete后没有清空条件的Bug,导致重用此Query出错 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.11.0-RELEASE</version> </dependency> BeetlSQL 自主研发自2015年,目标是提供开发高效,维...

5
4
发表了资讯
2021/09/21 09:54

BeetlSQL 3.10.1 发布,流行的 Java DAO 工具

根据社区建议,提供TemporalTypeHandler增加了对OffsetDateTime等Temporal类支持 增加uuid22算法,生成一个压缩长度的uuid 字符串,比如@AssingId("uuid22") 调整SQLManagerBuilder,内置uuid,uuid22,simple 3个id算法 Beetl依赖使用最新版3.7.0.RELEASE <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.10.1-RELEASE</version> </dependency> BeetlSQL 自主研发...

1
2
发表了资讯
2021/09/13 13:57

BeetlSQL 3.8.0 发布,流行的 Java DAO 工具

本次发布合并了BeetlSQL使用者的若干PR PageRequest 新增 listRequeired属性,如果设置位false,则只查询总数,不会查询列表 SpringBoot集成增强,如果已经使用了Spring Boot内置的数据源,则默认采用 自定义事务管理器,优化了事务关闭链接 新增updateRowById, 此方法将忽略POJO的@Version @InsertIgnore等注解,直接按照属性来保存数据 在Saga回滚中,使用updateRowById代替updateById 对GreenPlum 支持 <dependency> ...

4
4
发表了资讯
2021/08/23 10:03

BeetlSQL 3.7.0 发布,流行的 Java DAO 工具

selectByIds不支持多主键Bug的修复 SQLReady方法增加SqlId参数。在Mapper中使用@Sql和@SqlTemplate,SqlId调整为泛型实体名字+方法名字 insert方法,如果@AutoId或者@SeqId有值,则注解不生效 S3PageSample示例Bug修复 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.7.0-RELEASE</version> </dependency> BeetlSQL 自主研发自2015年,目标是提供开发高效,维护高...

10
3
发表了资讯
2021/08/04 10:19

BeetlSQL 3.6.4 发布,流行的 Java DAO 工具

本次发布感谢很多网友提出的想法和提交的PR,实际上3.x以来的各个功能调整或者Bug修复,都是网友的新人和积极参与 修复3.6.x 引入JSQLParser后解析SQL Server的错误 增加了Slf4JLogInterceptor,未来替代DebugInterceptor 修复代码生成重复导入包名的错误 Solon升级到1.5.17 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.6.4-RELEASE</version> </dependency> ...

1
5
发表了资讯
2021/07/26 16:06

BeetlSQL 3.6.3 发布,流行的 Java DAO 工具

修复引SQLParser后,PageKit.getCountSql中若使用group by生成countsql不正确的Bug,如下: SELECT * FROM student GROUP BY id PageKit.getCountSql: SELECT COUNT(*) FROM student GROUP BY id Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.6.3-RELEASE</version> </dependency> BeetlSQL 研发自2015年,目标是提供开发高效,维护高效,运行高...

5
2
发表了资讯
2021/07/20 10:27

BeetlSQL 3.6.2 发布,流行的 Java DAO 工具

本次发布主要是升级了Beetl版本 升级Beetl到3.4.0 SQLManagerBuilder 增加getName方法,获取SQLManager的名字 合并社区的PR,Query,Mapper类等方法内部调整 Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.6.2-RELEASE</version> </dependency> BeetlSQL 研发自2015年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,...

4
1
发表了资讯
2021/07/12 13:33

BeetlSQL 3.6.1 发布,流行的 Java DAO 工具

本次改动引入了sqlParser工具,用来解析sql,代替之前自己写的解析工具 修复upsert方法复合主键不支持的错误 合并来自社区的PR,增强BeetlSQL代码可读性 按照社区建议,采用sqlParser,解决execute方法解析sql导致的问题 Maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.6.1-RELEASE</version> </dependency> BeetlSQL 研发自2015年,目标是提供开发高效,...

0
3
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
33 评论
665 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部