# 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。