项目介绍
写道
MiniDao 是一款轻量级JAVA持久层框架,基于 SpringJdbc + freemarker 实现,具备Mybatis一样的SQL分离和逻辑标签能力。Minidao产生的初衷是为了解决Hibernate项目,在复杂SQL具备Mybatis一样的灵活能力,同时支持事务同步。
当前版本:v1.9.0 | 2022-09-02
源码下载
升级日志
- 升级依赖版本号与jeecgboot版本号一致,重点升级jsqlparser重构了不兼容方法
- 升级springframework依赖到5.3.18 ,与jeecgboot同步
- 升级spring-boot-starter依赖到2.6.6 ,与jeecgboot同步
- 升级javassist依赖到 3.25.0-GA
- 升级jsqlparser依赖到 4.3
- 升级ognl版本号解决报错问题
- 不支持SqlServer分页问题
- 支持用户自定义数据源
- SqlServer2012(derby用到)、PostgreSql、神通、Hsql、mysql分页优化,有分页关键词就用select包裹起来
- 反射打破方法没必要写,去掉fields[j].setAccessible(true)
- SQL Server表名关键字查询失败
技术文档
MiniDao特征
An powerful enhanced toolkit of SpringJdbc for simplify development
具有以下特征:
- O/R mapping不用设置xml,零配置便于维护
- 不需要了解JDBC的知识
- SQL语句和java代码的分离
- 只需接口定义,无需接口实现
- SQL支持脚本语言(强大脚本语言,freemarker语法)
- 支持与hibernate轻量级无缝集成
- 支持自动事务处理和手动事务处理
- 性能优于Mybatis
- 比Mybatis更简单易用
- SQL 支持注解方式
- SQL 支持独立文件方式,SQL文件的命名规则: 类名_方法名; SQL文件更容易定位,方便后期维护,项目越大此优势越明显
- SQL标签采用Freemarker的基本语法
代码体验
1. 接口定义[EmployeeDao.java]
@MiniDao public interface EmployeeDao { @Arguments({ "employee"}) @Sql("select * from employee") List<Map<String,Object>> getAll(Employee employee); @Sql("select * from employee where id = :id") Employee get(@Param("id") String id); @Sql("select * from employee where empno = :empno and name = :name") Map getMap(@Param("empno")String empno,@Param("name")String name); @Sql("SELECT count(*) FROM employee") Integer getCount(); int update(@Param("employee") Employee employee); void insert(@Param("employee") Employee employee); @ResultType(Employee.class) public MiniDaoPage<Employee> getAll(@Param("employee") Employee employee,@Param("page") int page,@Param("rows") int rows); }
2. SQL文件[EmployeeDao_getAllEmployees.sql]
SELECT * FROM employee where 1=1 <#if employee.age ?exists> and age = :employee.age </#if> <#if employee.name ?exists> and name = :employee.name </#if> <#if employee.empno ?exists> and empno = :employee.empno </#if>
3. 接口和SQL文件对应目录
4. 测试代码
public class Client { public static void main(String args[]) { BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); EmployeeDao employeeDao = (EmployeeDao) factory.getBean("employeeDao"); Employee employee = new Employee(); String id = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); employee.setId(id); employee.setEmpno("A001"); employee.setSalary(new BigDecimal(5000)); employee.setBirthday(new Date()); employee.setName("scott"); employee.setAge(25); //调用minidao方法插入 employeeDao.insert(employee); } }
相关推荐
gRPC-java 1.9.0 已发布,gRPC-java 是谷歌 RPC 框架 gRPC 的 Java 实现。gRPC 是一个高性能、开源、通用的 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。 gRPC 基于 ...
在本文中,我们将深入探讨TensorFlow 1.9.0版本,以及如何在Windows 10环境下,结合Python 3.7和Anaconda 3进行安装。 首先,TensorFlow 1.9.0是TensorFlow的一个稳定版本,它提供了许多新特性、性能优化和错误修复...
这里的 `grpc-java-1.9.0.zip` 是 `grpc-java` 在 1.9.0 版本的源代码,对于理解 GRPC 的工作原理、自定义扩展或排查问题非常有帮助。 首先,让我们深入了解 GRPC 的核心概念: 1. **ProtoBuf(Protocol Buffers)...
1.9.0是PyTorch的一个版本更新,通常包含性能优化、新功能和改进。这个zip文件"pytorch_1.9.0_docs_tutorials.zip"提供了PyTorch 1.9.0的文档和教程,便于用户在没有网络连接的情况下离线学习。 首先,我们来详细...
Git-1.9.0是Git的一个重要版本,它提供了许多新功能和改进,增强了用户体验和效率。 1. Git基本概念: - **仓库(Repository)**:存储所有文件及其历史版本的地方。 - **提交(Commit)**:对文件或项目所做的...
标题中的"JByteMod1.9.0.zip"表明我们正在讨论的是JByteMod的一个特定版本——1.9.0,它被封装在一个ZIP压缩文件中。这个压缩包包含了一个名为"JByteMod1.9.0.jar"的JAR文件,这通常意味着它是可以直接运行或在Java...
Apache Shiro 是一个强大且易用的...总之,Apache Shiro-1.9.0版本作为一个全面的安全框架,为Java开发者提供了丰富的安全功能和便利的使用方式。无论是对于初学者还是有经验的开发者,都是一个值得信赖的安全工具。
Apache Flume 1.9.0 版本是该软件的一个稳定版本,包含了若干改进和修复。 在Flume的架构中,数据流动通过三个核心概念:源头(Sources)、通道(Channels)和接收器(Sinks)。这些组件协同工作,确保数据的高效...
在 Consul 1.9.0 版本中,它提供了多种关键特性以支持现代微服务架构。以下是对这个版本及其核心功能的详细解读: 1. **服务发现**:Consul 提供了强大的服务发现功能,允许服务实例动态注册和注销,使得其他服务...
`libssh2-1.9.0`是该库的一个特定版本,适用于Windows平台,提供了编译好的库文件和源代码。 **SSH2协议** SSH(Secure Shell)是一种网络协议,用于加密网络连接,确保数据传输的安全性。SSH2是SSH协议的第二个...
这个压缩包文件"unlocker1.9.0.rar"包含了Unlocker的1.9.0版本安装程序,即"unlocker1.9.0.exe"。 在Windows系统中,有时会遇到提示“文件正在被另一个程序使用,无法进行操作”的错误,这是因为Windows的文件锁定...
jQuery 1.9.0版本是一个重要的里程碑,它对早期版本的一些过时API进行了清理,以保持库的现代性和兼容性。这一版本移除了20多个不再推荐使用的函数和方法,如`.live()`,并引入了新的API,如`.on()`和`.off()`,以...
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法; 作者这里可能仅仅只是针对某些情况,希望对你有所帮助! 安装...
赠送jar包:onnx-1.9.0-1.5.6.jar; 赠送原API文档:onnx-1.9.0-1.5.6-javadoc.jar; 赠送源代码:onnx-1.9.0-1.5.6-sources.jar; 赠送Maven依赖信息文件:onnx-1.9.0-1.5.6.pom; 包含翻译后的API文档:onnx-1.9.0...
Apache Flink是一个流行的开源流处理和批处理框架,它提供了高度容错的数据流处理能力,支持实时计算和批处理分析。在Flink 1.9.0版本中,引入了许多重要改进和新特性,使其成为自Flink 1.0以来最重大的更新之一。 ...
1.9.0发布时,jQuery团队开始进行了一项名为"jQuery Migrate"的计划,目的是帮助开发者从旧版本平稳过渡到新版本。1.9.0移除了大量过时或废弃的方法,例如`$.browser`、`$.cleanData`等,以鼓励使用更现代的API。...
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 XXL-JOB 1.9.0(快照版本)示例...
Git-1.9.0是Git版本控制系统的一个重要版本,Git是一种分布式版本控制系统,由Linux创始人林纳斯·托瓦兹创建,旨在提高软件开发中的版本管理和协作效率。Git以其高效、灵活和强大的特性在全球开发者中广泛应用,...
2. **Channels**: Channels 是数据缓冲区,提供了一种内存或磁盘上的持久化机制,确保数据在传输过程中的可靠性。常见的 Channel 类型有 Memory Channel(内存通道)和 File Channel(文件通道)。 3. **Sinks**: ...
从提供的版本号"phoneboard-v1.9.0"和"phoneboard-v1.5.0"来看,这代表了该软件的不同迭代版本。通常,更新版本(如v1.9.0)会包含前一版本(如v1.5.0)的所有功能,并可能引入新的特性、修复已知问题或者优化用户...