beetlsql

BeetlSQL ,更好的Dao工具

烂漫一生 提交于 2019-12-07 21:48:34
beetlsql 入门 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。 SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试 数据模型支持Pojo,也支持Map/List这种无模型的模型 SQL 模板基于Beetl实现,更容易写和调试,以及扩展 无需注解,自动生成大量内置SQL,轻易完成增删改查功能 简单支持关系映射而不引入复杂的OR Mapping概念和技术。 支持跨数据库平台,开发者所需工作减少到最小 具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能 内置支持主从数据库,通过扩展,可以支持更复杂的分库分表逻辑 代码例子 // 执行/user.md 里的select sql List<User> list = SqlManager.select(“user.select”,paras,User.class); // 使用内置的生成的sql执行 User user = SqlManage.selectById.unque(User.class,id); SQL例子 selectUser === select * from user where 1=1 @if(user.age==1){ and age = #user.age# @

beetlsql

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-07 21:48:24
git代码地址:https://gitee.com/study_and_discussion_group/beetlsql.git 总结: beetlsql是集成了hibernate+mybatis两种orm框架的优点设计出来的,并且beetlsql摒弃了mybatis的sql-xml配置方式,而是采用了md文件,这使得sql语句的可视性大大的提高采用自有的@Table而不是javax包下的这一点要注意,开发起来的感受很棒,基本上是目前为止我使用的最轻量级的框架,并且是国产框架,很多日志打印的都是中文,一目了然。缺点也是存在的,比如与spring的集成不是很好,springboot中使用的时候要手写很多配置,更不要说AutoConfig了 来源: CSDN 作者: lovelyesz 链接: https://blog.csdn.net/lovelyesz/article/details/88633406

beetlSql删除语句

*爱你&永不变心* 提交于 2019-12-07 21:48:14
在公司里遇到一种情况,需要删除指定的几条数据,但是在使用dao.deleteById(param);删除时, 虽然执行的删除语句没有问题,但是可以看到,更新的数据条数是0,说明没有成功 实际上在数据库中也能查到,一直不 知道怎么解决,想要自己写sql语句实现删除,但是dao和sqlManager提供的delete方法里没有支持sqlId的,后来发现beetlSql的官方文档里,更 新和删除时放在一起的, 同时,里面并没有删除的语句,我就使用更新方法里的 这里支持sqlId自己写sql语句,同时可以批量删除,所以我就用的updataBatch, 执行结果: 可以看到这一次更新变成1了,说明成功了,在数据库也查不到数据了,确实被删除 来源: CSDN 作者: weixin_36744356 链接: https://blog.csdn.net/weixin_36744356/article/details/79635976

beetlSql的源码解析

♀尐吖头ヾ 提交于 2019-12-07 21:47:32
beetlsql对外暴露最重要的类是SQLManager,SQLmanager里有很多实用的方法。 但是Sqlmnager并不是真正流程的执行者,而是SQLScript这个类。这个类里面都是执行细节。 我们这次只挑出其select行为的最终方法List<T> select(Class<T> clazz, Map<String, Object> paras, RowMapper<T> mapper) 如下所示: public <T> List<T> select(Class<T> clazz, Map<String, Object> paras, RowMapper<T> mapper) { //检查是否modele类上是否有带有@Builder的注解,如果有的话,执行一下before checkAnnotatonBeforeSelect(clazz, paras); //运行sql模板,获取实际的sql语句 SQLResult result = run(paras); String sql = result.jdbcSql; List<SQLParameter> objs = result.jdbcPara; ResultSet rs = null; PreparedStatement ps = null; List<T> resultList = null; /

SpringBoot2 结合BeetlSQL开发

十年热恋 提交于 2019-12-07 21:47:18
为什么是SpringBoot2:SpringBoot自从正式版发布以来,受到了众多的关注和追捧。在2.0出来之后,已经与1.X有了很多不同之处。当然也是为了追赶潮流,直接上了2.0作为本文基础框架,当然1.X的版本也是可以使用的。 为什么是BeetlSql:这是一个在国内还没有那么火的DAO工具,根据官网的说法:“ 它是一个超过MyBatis的全功能Java DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。”。本人抱着试一试的想法用此框架进行Demo开发,感觉不错。并且已经用于公司的实战中。该框架与MyBatis以及Hibernate的 网上可以搜索到,本人就不赘述。 在SpringBoot已经出到2.0正式版之后,利用SpringBoot的特点,结合BeetlSQL的优势,可以快速的搭建一个实战级别的项目架构。 话不说多,我们开始吧! 首先开始照常,先搭建一个SpringBoot2的框架。可以新建一个maven project。在pom.xml中引入 2.0.X, 不管X是几,只要是正式版都行。 引入spring-boot-starter-web。排除tomcat是为了打war包放入外部tomcat的时候少生成内嵌tomcat的包或者用其他内嵌容器

spring集成beetlsql

二次信任 提交于 2019-12-07 21:46:53
spring集成beetlsql 按以下流程操作 - pom配置 - spring注入配置 - 资源文件 - 测试 感谢闲大赋开发这么好用的组件 http://ibeetl.com/guide/#beetlsql 1.pom配置 < beetl.version > 2.5.2 </ beetl.version > < beetlsql.version > 2.6.5 </ beetlsql.version > < dependency > < groupId > com.ibeetl </ groupId > < artifactId > beetl </ artifactId > < version > ${beetl.version} </ version > </ dependency > < dependency > < groupId > com.ibeetl </ groupId > < artifactId > beetlsql </ artifactId > < version > ${beetlsql.version} </ version > </ dependency > 2.spring注入配置 < bean id = "sqlManager" class = "org.beetl.sql.ext.spring4.SqlManagerFactoryBean"

spring-boot集成beetlsql

血红的双手。 提交于 2019-12-07 21:45:14
1 、注入依赖 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>2.6.4</version> </dependency> 2、在application.yml中添加配置 spring: datasource: beetlsql: dbStyle: org.beetl.sql.core.db.MySqlStyle sqlRoot: /sql debug: 1 debug为1时,显示执行sql,0则不显示。 3、使用 首先,在类中注入 SQLManager,调用他的方法执行数据库 @Autowired private SQLManager splManager; 声明一个 sql存放的对象 SQLReady sqlReady=new SQLReady("sql语句"); 若是查询,则有返回值: List<T> list=sqlManager.execute(sqlReady,T.class); 若是执行持久化,则是 sqlManager

BeetlSQL,简单和强大数据库访问工具(更新)

落爺英雄遲暮 提交于 2019-12-05 08:13:27
beetlsql 特点 BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。 无需注解,自动生成大量内置SQL,轻易完成增删改查功能 数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型 SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试。 SQL 模板基于Beetl实现,更容易写和调试,以及扩展 简单支持关系映射而不引入复杂的OR Mapping概念和技术。 具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能 内置支持主从数据库,通过扩展,可以支持更复杂的分库分表逻辑 支持跨数据库平台,开发者所需工作减少到最小 5 分钟例子 准备工作 为了快速尝试BeetlSQL,需要准备一个Mysql数据库,然后执行如下sql脚本 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(64) DEFAULT NULL, `age` int(4) DEFAULT NULL, `userName` varchar(64) DEFAULT NULL, PRIMARY KEY

hibernate,mybatis,beetlsql 全面比较

别来无恙 提交于 2019-12-05 08:13:11
这是我的一个综合评分,总共分为12个单项,每个单项最高5分,最低0分。注意,评价只包含这些软件提供的标准功能,不包含第三方提供的功能,如代码生成 等。 开发效率 hibernate 能获取数据库metadata,因此简单的sql操作,如插入,更新,删除,翻页等,都可以自动完成。但因为概念复杂,经常会导致开发人员会写sql,能写java,但不会写hibernate情况出现(关系配置或者hql),导致开发效率反而降低。 session.save(user); String hql= "from bank.Person person where person.id.country = 'AU' " Query query = sessin.createQuery(hql); mybatis 必须手工写sql,效率较低,有第三方工具能自动生成才勉强提高了开发效率 beetlsq l 同样具有hibernate 的功能,但不要求配置或者annotation。所以认为开发效率比hibernate高,是因为beetlsql 本身使用不容易出错,不像hibernate那样概念复杂,容易使用错误,导致实际开发速度降低. 在写sql文件的时候,基于MD+beetl的也比myabtis 的xml 要快很多. sqlManager.save(user); List<User> list =

Fastjson序列化导致BeetlSQL无限循环查询的解决方案

两盒软妹~` 提交于 2019-12-05 08:12:56
前言 BeetlSQL 最近的更新新增了 @OrmQuery 注解,作用是可以让内置生成的SQL自动去延迟级联加载对象,此功能的增加让 BeetlSQL 在ORM功能方面完全有了抗衡Hibernate的资本。这么新鲜刺激的功能,不尝鲜一下简直对不起正使用 BeetlSQL 的自己,更是对不起 BeetlSQL 的作者 @闲·大赋 呢! 问题与场景 假定有城市City和省份Province两个Pojo,分别都注解上了 @OrmQuery ,本意是想当查询城市City时能延迟级联查询对应的省份Province,或查询省份Province时可以延迟级联查询该省份下面的全部City列表,理想很丰满,现实却很骨感。我们直接使用Beetl或者JSP等模板引擎直接在页面上输出以及级联加载时没有任何问题。 凡事都有个但是~~~当我们使用Fastjson序列化某一个查询结果时可怕的事情发生了,互相 @OrmQuery 导致Fastjson序列化时会一直查询下去,类似于死循环。 举个栗子,具体表现为:当查询深圳市,因为有 @OrmQuery 级联关系,Fastjson自动序列化到tails( tails为Pojo继承了TailBean后的一个属性,用于 BeetlSQL 内部级联加载时存放代理对象等使用 )的province时 BeetlSQL 又会去数据库查询广东省