# hbatis
**Repository Path**: lixl/hbatis
## Basic Information
- **Project Name**: hbatis
- **Description**: hbatis,简单实用的ORM框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2019-04-30
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## hbatis, 简单实用的ORM框架
### 特性:
* 查询缓存支持。
* 支持多数据源操作。
* VO对象类预加载,可快速返回查询映射对象。
* 支持Fluent API。
* 可随意切换连接池(Druid > TomcatJdbc > BoneCP > C3P0 > Dbcp2 > Dbcp)
#### 如何使用:
maven坐标:
```xml
cn.sylinx
hbatis-core
1.7.2.RELEASE
```
gradle坐标:
```
compile 'cn.sylinx:hbatis-core:1.7.2.RELEASE'
```
##### SNAPSHOT
```java
// sql
String sql = "select * from mytablename where a = ?";
List list = DAO.hbatis().queryRecordsWithSql(sql,3);
// fluent api
List dataList = DAO.hbatis().query(FS.of(TestFluent.class).select("number, userName").where("userName").eq("johnhan"));
// fluent api lambda
List dataList1 = DAO.hbatis().query(FS.of(TestFluent.class).select(TestFluent::getUserName,TestFluent::getNumber).where(TestFluent::getUserName).eq("johnhan"));
// sql 资源, sql/demo.sql
// select * from t_sys_user where uid = #{uid} #IF[mobile != null] and mobile = #{mobile} #END
String sqlResource = "sql/demo.sql";
Map params = new HashMap();
params.put("uid", "U001");
List userList = DAO.mirage().queryList(sqlResource, params, User.class);
```
##### 样例代码:
https://gitee.com/han/hbatis-example
##### 升级日志:
##### v1.7.2.RELEASE
1) 添加lambda支持。
2) 添加count函数支持。
3) 添加FS添加likeLeft, likeRight支持。
4) FS添加嵌套条件段。
5) 实体模型表名默认使用模型名称(驼峰转下划线),属性对应字段默认使用下划线。
##### v1.7.2-rc.3
1) 修改spring boot启动器实现方式。
##### v1.7.2-rc.2
1) 不同数据源可指定连接池(Druid,TomcatJdbc,BoneCP,C3P0,Dbcp2,Dbcp)
##### v1.7.2-rc.1
1) 针对不同的连接池可做个性化参数配置。
##### v1.7.1
1) 添加dbcp连接池支持(Druid > TomcatJdbc > BoneCP > C3P0 > Dbcp2 > Dbcp)
##### v1.7.0
1) 添加多连接池支持(Druid > TomcatJdbc > BoneCP > C3P0 > Dbcp2)
##### v1.6.5
1) 添加批量新增对象接口。
2) 添加批量更新sql接口。
##### v1.6.4
1) BUG修复:解析动态sql非String类型参数转换失败。
##### v1.6.3
1) 添加单列对象查询接口。
##### v1.6.2
1) FS update gmtModify
##### v1.6.1
1) ModelPreloadPlugin模型扫描逻辑优化(第一次初始化只加载表模型)。
2) FluentSqlSupport添加缓存查询支持 List queryWithCache(FS fluentSql)。
3) Model中的context去掉final修饰,以便支持模型深度克隆。
##### v1.6.0
1) FS关键字处理。
2) 暴露CommonDaoService.call(Callable callable)接口,可处理自定义事件。
##### v1.5.8
1) 添加ModelConst。
2) 添加全局模型字段映射策略,可配置。
3) 部分代码改进、日志添加。
4) 添加列描述注解ColumnDesc。
5) mysql表生成工具修改。
6) Table注解添加desc属性。
7) dao接口添加是否存在表字段API。
8) 添加长文本、二进制解析ddl支持。
9) 添加ddl生成(创建表、修改表列、添加表列),支持mysql、oracle、sqlserver。
10) 单个事务处理,支持设置隔离类型(ITransaction.transactionIsolation())。
11) 查询主键映射BUG修复。
12) 添加sqlserver分页支持。
##### v1.5.7
1) 添加FluentSql支持。
2) 添加FluentSqlSupport接口。
3) 修改1.5.6缺陷。
##### v1.5.6
1) CommonDaoService添加查询记录接口:getRecordsByField。
2) 修改部分接口,将Tuple换成Pair。
3) 支持使用springboot现有数据源(自动配置HbatisAutoConfig)。
4) 将druid依赖设置为provided。
##### v1.5.5
1) 修改部分API支持泛型主键。
##### v1.5.4
1) 添加h2数据库支持。
2) validateQuery 添加到SqlBuilder接口中。
##### v1.5.3
1) 修复getByField接口BUG(当字段中有null值抛出异常)。
2) 添加是否初始化配置:hbatis.init如果为true则初始化数据源,否则不初始化。
3) 修改cn.sylinx.hbatis.db.common.Record(添加getter、setter),以适应fastjson序列化。
4) 修改cn.sylinx.hbatis.kit.Tuple(添加默认构造函数、getter、setter),以适应fastjson序列化。
5) 解决bug,参数为空时获取类型空指针问题。
##### v1.5.2
1) 将启动器中的DAO重构为cn.sylinx.hbatis.ext.starter.util.DAO。
2) 添加PostgreSQL validateQuery语句。
3) 缓存工具重构。
4) 添加第三方插件代理支持(cn.sylinx.hbatis.plugin.proxy.ProxyPlugin)。
5) 方言修改,使用类型处理器处理设置值和取值。
6) 设置Druid监控(stat,wall,log4j)
##### v1.5.0-GA
1) Model对象添加克隆方法。
2) CommonDaoService添加接口 List getObjectByField(List kvList, Class clz, boolean cached),支持缓存查询。
3) CommonDaoService添加接口 T get(BigInteger id, Class clz, boolean cached),支持缓存查询。
4) 修复Oracle查询部分bug。
5) 添加PostgreSQL支持。
6) 添加事务类型插件(TransactionIsolationPlugin)。
7) 将hbatis-common-starter启动器,移入hbatis-core中(cn.sylinx.hbatis.ext.starter.common)。
8) 将hbatis-springboot-starter启动器,移入hbatis-core中(cn.sylinx.hbatis.ext.starter.springboot)。
##### v1.4.0-rc.1
1) 添加方言sql构建器(cn.sylinx.hbatis.db.mapper.sql.SqlBuilder)。
2) 修改BUG:实体对象中有关键字,更新或者保存时异常。
3) 支持模型设置NULL值。
4) FunctionFactory 添加注册函数方法。
5) 部分代码改进与重构。
6) 将hbatis-mirage和hbatis-xmapper合并到hbatis-core中。
7) 将cn.sylinx.hbatis.type中的文件更换mybatis最新文件。
8) JDK最低版本要求jdk1.8
9) 解决ClassLoaderWrapper获取类路径资源不全问题。
10) 修改函数 include、exclude,支持or、and替代。
##### v1.3.3-rc.1
1) 添加模型属性和列名映射策略(cn.sylinx.hbatis.db.mapper.acm.AcmStrategy)
2) 修改AttributeColumnMapping支持映射策略。
3) 修改PrimaryKey支持复合主键。
##### v1.3.2-rc.2
1) Record记录对象,put方法修饰符改为public。
##### v1.3.2-rc.1
1) 函数使用ServiceLoader加载,方便扩展其它函数。
2) 去掉无需依赖的第三方jar。
3) Record记录对象添加索引访问。
4) 修改ognl表示版本为 3.1.2
5) 添加like函数。
##### v1.3.1-rc.4
1) 修改部分API接口,实体不再继承BaseModel。
2) 添加分页方言支持(mysql、derby、oracle)。
##### v1.3.0
1) 将将MirageService和XmapperService剥离出为单独的项目hbatis-mirage、hbatis-xmapper。
##### v1.2.4
1) 添加sql函数include、exclude (package: cn.sylinx.hbatis.ext.function)。
2) 添加DAO服务支持(class:cn.sylinx.hbatis.ext.mirage.repository.DAO)。
3) 添加基本Model(package:cn.sylinx.hbatis.ext.model)。
4) 添加mysql DDL脚本生成工具类(class:cn.sylinx.hbatis.ext.tool.RepositoryTools)。
##### v1.2.3
1) AttributeColumnMapping 添加mappingFile字段文件映射方式。
2) ModelPrloadPlugin 不设置使用开关。
3) ModelBuilder 部分代码修改。
4) 添加数据库类型区分,支持方言配置。
##### v1.2.1
1) 修复ModelCacheManager模型加载,主键为空的bug。