# legendDao **Repository Path**: simonscode/legendDao ## Basic Information - **Project Name**: legendDao - **Description**: LegendDao实现了JPA的基本接口 , 是spring jdbcTemplate增强工具包, 只做增强不做改变,简化CRUD操作 。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://www.legendshop.cn - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2020-10-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 | Intro LegendDao实现了JPA的基本接口 , 是spring jdbcTemplate增强工具包, 只做增强不做改变,简化CRUD操作 。 持久层框架LegendDao是一个基于Java和Spring 的jdbcTemplate的持久层框架。支持类似Hibernate方式的单表映射功能和采用SQL方式来处理多表关联的查询和插入删除更新等功能,消除了大部分的JDBC代码和参数的手工设置以及结果集的检索。由于使用了jdbctemplate, 事务天然是采用是采用Spring自带的事务。 每个数据库连接都对应一个entityFactory,包括对jdbcTemplate的引用和数据库方言dialect的引用,方言支持MySQL,Oracle等数据库。LegendDao最强大的特性之一就是它的动态语句功能,在后台列表中往往需要根据不同的条件来筛选数据,普通的SQL需要大量的if else去组装SQL,legendDao提供一个Map来动态组装出不同的数据,而且支持运行时动态改变SQL。同时LegendDao支持采用反射和字节码增强的方式来由ResultSet来组装最后要的实体类。 ## 优点 | Advantages 1. **无侵入,操作方便** : LegendDao实现了JPA的基本接口,底层实现是用spring jdbcTemplate实现天然跟spring集成到一起; 2. **依赖少** :仅仅依赖 spring 事务包和spring jdbc等spring核心包; 3. **损耗小**:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作; 4. **通用CRUD操作** : 实现Hibernate/JPA方式的CRUD,支持JPA方式的注解方式,仅仅通过少量配置即可实现单表大部分 CRUD 操作; 5. **多种主键策略**:支持多达4种主键策略(内含分布式唯一ID生成器Table Sequence),可自由配置,完美解决主键问题; 6. **支持代码生成**:采用代码可快速生成 Dao、 Model 、 Service 、 Controller 层代码,支持模板引擎; 7. **内置分页插件**: 支持MySQL、Oracle、SQL Server等数据库; 8. **支持动态SQL**: 可以把SQL定义到XML文件中,通过有限状态机模式把最终的sql解析出来。 9. **支持系统一级缓存**: 一级缓存是采用在事务级别实现的,也可以接入外部二级缓存。 10. **支持数据库读写分离**: 可以设置多个数据源并实现读写分离。 ## 关键接口 LegendDao封装了基本的JPA接口,但是基本接口不满足需求的情况下,也可以直接使用spring的jdbcTemplate来操作。 | 接口 |说明 |----------------|-------------------------------| |Dao | 通用Dao接口. | |CrudDao |增删查改基本Dao接口. | |GenericDao | 封装了通用的分页接口 | |GenericJdbcDao | 采用jdbcTempate封装Jdbc的操作 | ## 体系架构 我们把LegendDao的功能架构分为三层,如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191103111311728.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlZ2VuZHNob3A=,size_16,color_FFFFFF,t_70) ##### 1. API接口层 提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。支持类似Hibernate的增删改查的和采用JDBC方式的多表查询。 ##### 2.数据处理层 负责具体的SQL查找、SQL组装、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 ##### 3. 基础支撑层 基础层使用Spring的jdbcTemplate来实现。 ## 版本说明 5.5 基础版本 1. 支持基础的CURD的写法,无需新写代码; 2. 支持sharding-jdbc分表分库; 3. 优化了分页查询的代码, 使用更加简单; 6.0.5版 1. 增加lambda表达式的查询写法; 2. 增加对主键策略:雪花算法; 3. currentPageNO 支持整型和字符串类型; ## 版权 | License [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) [1]: https://gitee.com/legendshop/legendDao [2]: http://www.legendshop.cn