`
zhangdaiscott
  • 浏览: 440748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8fb25857-16b4-3681-ab5e-e319f45c42a8
Jeecg快速开发平台
浏览量:0
文章分类
社区版块
存档分类

MiniDao1.9.0 版本发布,轻量级Java持久化框架

 
阅读更多

项目介绍

写道
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.tar.gz_gRPC-java_java Tcp _谷歌 RPC 框架

    gRPC-java 1.9.0 已发布,gRPC-java 是谷歌 RPC 框架 gRPC 的 Java 实现。gRPC 是一个高性能、开源、通用的 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。 gRPC 基于 ...

    Tensorflow 1.9.0版本文件.zip

    在本文中,我们将深入探讨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-java-1.9.0.zip` 是 `grpc-java` 在 1.9.0 版本的源代码,对于理解 GRPC 的工作原理、自定义扩展或排查问题非常有帮助。 首先,让我们深入了解 GRPC 的核心概念: 1. **ProtoBuf(Protocol Buffers)...

    pytorch_1.9.0_docs_tutorials.zip

    1.9.0是PyTorch的一个版本更新,通常包含性能优化、新功能和改进。这个zip文件"pytorch_1.9.0_docs_tutorials.zip"提供了PyTorch 1.9.0的文档和教程,便于用户在没有网络连接的情况下离线学习。 首先,我们来详细...

    版本控制Git-1.9.0客户端

    Git-1.9.0是Git的一个重要版本,它提供了许多新功能和改进,增强了用户体验和效率。 1. Git基本概念: - **仓库(Repository)**:存储所有文件及其历史版本的地方。 - **提交(Commit)**:对文件或项目所做的...

    JByteMod1.9.0.zip

    标题中的"JByteMod1.9.0.zip"表明我们正在讨论的是JByteMod的一个特定版本——1.9.0,它被封装在一个ZIP压缩文件中。这个压缩包包含了一个名为"JByteMod1.9.0.jar"的JAR文件,这通常意味着它是可以直接运行或在Java...

    shiro-1.9.0版本jar包

    Apache Shiro 是一个强大且易用的...总之,Apache Shiro-1.9.0版本作为一个全面的安全框架,为Java开发者提供了丰富的安全功能和便利的使用方式。无论是对于初学者还是有经验的开发者,都是一个值得信赖的安全工具。

    consul 1.9.0版本,Windows 64位

    在 Consul 1.9.0 版本中,它提供了多种关键特性以支持现代微服务架构。以下是对这个版本及其核心功能的详细解读: 1. **服务发现**:Consul 提供了强大的服务发现功能,允许服务实例动态注册和注销,使得其他服务...

    libssh2-1.9.0.rar

    `libssh2-1.9.0`是该库的一个特定版本,适用于Windows平台,提供了编译好的库文件和源代码。 **SSH2协议** SSH(Secure Shell)是一种网络协议,用于加密网络连接,确保数据传输的安全性。SSH2是SSH协议的第二个...

    jquery-1.9.0.min.js

    jQuery 1.9.0版本是一个重要的里程碑,它对早期版本的一些过时API进行了清理,以保持库的现代性和兼容性。这一版本移除了20多个不再推荐使用的函数和方法,如`.live()`,并引入了新的API,如`.on()`和`.off()`,以...

    安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法

    安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法; 作者这里可能仅仅只是针对某些情况,希望对你有所帮助! 安装...

    onnx-1.9.0-1.5.6-API文档-中文版.zip

    赠送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-flume-1.9.0-bin.tar.zip

    Apache Flume 1.9.0 版本是该软件的一个稳定版本,包含了若干改进和修复。 在Flume的架构中,数据流动通过三个核心概念:源头(Sources)、通道(Channels)和接收器(Sinks)。这些组件协同工作,确保数据的高效...

    flink 1.9.0.rar

    Apache Flink是一个流行的开源流处理和批处理框架,它提供了高度容错的数据流处理能力,支持实时计算和批处理分析。在Flink 1.9.0版本中,引入了许多重要改进和新特性,使其成为自Flink 1.0以来最重大的更新之一。 ...

    jQuery1.7.1-1.9.0各版本

    1.9.0发布时,jQuery团队开始进行了一项名为"jQuery Migrate"的计划,目的是帮助开发者从旧版本平稳过渡到新版本。1.9.0移除了大量过时或废弃的方法,例如`$.browser`、`$.cleanData`等,以鼓励使用更现代的API。...

    XXL-JOB 1.9.0(快照版本)示例

    XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 XXL-JOB 1.9.0(快照版本)示例...

    Git-1.9.0 git

    Git-1.9.0是Git版本控制系统的一个重要版本,Git是一种分布式版本控制系统,由Linux创始人林纳斯·托瓦兹创建,旨在提高软件开发中的版本管理和协作效率。Git以其高效、灵活和强大的特性在全球开发者中广泛应用,...

    flume-1.9.0.tgz

    2. **Channels**: Channels 是数据缓冲区,提供了一种内存或磁盘上的持久化机制,确保数据在传输过程中的可靠性。常见的 Channel 类型有 Memory Channel(内存通道)和 File Channel(文件通道)。 3. **Sinks**: ...

    phoneboard-v1.9.0和phoneboard-v1.5.0两个版本

    从提供的版本号"phoneboard-v1.9.0"和"phoneboard-v1.5.0"来看,这代表了该软件的不同迭代版本。通常,更新版本(如v1.9.0)会包含前一版本(如v1.5.0)的所有功能,并可能引入新的特性、修复已知问题或者优化用户...

    Playmaker 1.9.0

    9. **跨平台支持**:作为Unity插件,Playmaker 1.9.0支持多平台发布,包括Windows、Mac、iOS、Android以及WebGL等,适应各种游戏开发需求。 10. **版本控制**:与Unity项目一起使用版本控制系统(如Git)时,...

Global site tag (gtag.js) - Google Analytics