QuickDAO

Java ORM 框架
授权协议 GPL
开发语言 Java
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 单于阳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

QuickDAO

QuickDAO 是一款简单,易用,轻量级的java ORM框架.目前支持 Mysql, SQlite 以及 H2 数据库.

SpringBoot环境下由于类加载器问题请慎用,可能会导致未知问题出现!

QuickDAO目前没有在高并发环境下实践过,因此对于高并发项目请慎用.本项目适合于中小项目使用,提供封装良好的API与数据库进行交互,减少样板代码,尽可能提高开发效率!

目前QuickDAO使用Logback日志框架,DEBUG级别下会输入执行的SQL语句!

快速入门

1 建立实体类

//用户类
public class User {
    private long id;
    private String username;
    private String password;
//用户设置表
public class UserSetting {
    private long id;
    private long userId;
    private String setting;
    private User user;
//用户关注表
public class UserFollow {
    private long id;
    private long userId;
    private long followerId;
    private User user;
    private User followUser;

2 导入QuickDAO

QuickDAO基于JDBC,为提高效率,默认只支持数据库连接池.

  • 导入commons-dbcp(或者其他的DataSource实现) <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency>

2.1 使用maven

<dependency>
  <groupId>cn.schoolwow</groupId>
  <artifactId>QuickDAO</artifactId>
  <version>2.4</version>
</dependency>

3 使用QuickDAO

QuickDAO支持自动建表,自动新增字段功能.当您在Java代码中配置好QuickDAO后无需再对数据库做任何操作.

BasicDataSource mysqlDataSource = new BasicDataSource();
mysqlDataSource.setDriverClassName("com.mysql.jdbc.Driver");
mysqlDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/quickdao");
mysqlDataSource.setUsername("root");
mysqlDataSource.setPassword("123456");
//指定���体所在包名
cn.schoolwow.quickdao.dao.DAO dao = QuickDAO.newInstance()
                    .dataSource(mysqlDataSource)
                    .packageName("cn.schoolwow.quickdao.entity")
                    .build();
//之后所有的操作使用dao对象完成

3.1 简单查询与更新操作

//根据id查询
User user = dao.fetch(User.class,1);
//根据属性查询
User user = dao.fetch(User.class,"username","quickdao");
List<User> user = dao.fetchList(User.class,"password","123456");
//保存用户
dao.save(user);
dao.save(userList);
//删除用户
dao.delete(User.class,1);
dao.delete(User.class,"username","quickdao");

3.2 复杂查询

List<User> userList = dao.query(User.class)
   .addNotEmptyQuery("username")
   .getList();

关于复杂查询详细信息请点此查看

3.3 外键查询

List<User> userList = dao.query(User.class)
   .join(UserSetting.class,"id","userId")
   .addNotEmptyQuery("setting")
   .done()
   .getList();

关于外键查询详细信息请点此查看

3.3 分页排序查询

List<User> userList = dao.query(User.class)
   .pageNumber(1,10)
   .orderByDesc("id")
   .getList();

关于分页排序详细信息请点此查看

3.4 建表删表

//删除User表
dao.drop(User.class);
//建立User表
dao.create(User.class);

详细手册

  • 实体注解 QuickDAO有自动建表功能,用户可使用注解为实体类信息添加相关字段信息.同时QuickDAO能够自动匹配实体类和数据库表,自动添加新增的实体类字段信息.

  • 配置信息 QuickDAO可配置是否自动新建表,是否建立外键约束,忽略表和包等等.

  • 事务功能 QuickDAO基于JDBC封装了简单的事务功能.若需使用事务,请查询此手册

请注意: 开启事务时只作用于调用方法的dao对象,若配置有多个dao对象,对其他dao对象无影响(也即其他dao对象不会跟着开启事务功能)!

QuickDAO本身提供了一套较完整的JUnit测试用例,可查看ConditionTestDAOTest.

反馈

目前QuickDAO还不成熟,还在不断完善中.若有问题请提交Issue,作者将第一时间跟进并努力解决.同时欢迎热心认识提交PR,共同完善QuickDAO项目!

  • 软件简介 QuickDAO QuickDAO 是一款简单,易用,轻量级的java ORM框架.目前支持 Mysql, SQlite 以及 H2 数据库. SpringBoot环境下由于类加载器问题请慎用,可能会导致未知问题出现! QuickDAO目前没有在高并发环境下实践过,因此对于高并发项目请慎用.本项目适合于中小项目使用,提供封装良好的API与数据库进行交互,减少样板代码,尽可能提高开发效率!

  • 此仓库已废弃 QuickDAO QuickDAO是一款简单,易用,轻量级的java ORM框架. 支持数据库 最新版本2.10,支持以下数据库,更多数据库陆续支持中...... MySQL SQLite H2 Postgre SQL Server(2012版本以上) 详细文档(gitbook) QuickDAO使用了gitbook编写了文档,帮助您快速了解和使用QuickDAO.点此访问文档 注意

 相关资料
  • 我们在WebLogic11g下使用JSF2.1+PrimeFaces6.0+PrimeFaces-Extensions6.0.0、mojarra 2.1.7。 单击p:commandButton后,DOM inspector显示对话框已在正文和html标记之外创建,如下一个图像所示: 在正文外部呈现的对话框 如果我们使用相同的代码(没有帧)创建一个新的.xhtml,并单击p:commandButt

  • 许多的 PHP 开发者都使用框架,而不是重新造轮子来构建 Web 应用。框架抽象了许多底层常用的逻辑,并提供了有益又简便的方法來完成常见的任务。 你并不一定要在每个项目中都使用框架。有时候原生的 PHP 才是正确的选择,但如果你需要一个框架,那么有如下三种主要类型: 微型框架 全栈框架 组件框架 微型框架基本上是一个封装的路由,用来转发 HTTP 请求至一个闭包,控制器,或方法等等,尽可能地加快开

  • 主要内容:iframe - 设置高度与宽度,实例,iframe - 移除边框,实例,使用 iframe 来显示目标链接页面,实例,HTML iframe 标签通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。 iframe语法: 该URL指向不同的网页。 iframe - 设置高度与宽度 height 和 width 属性用来定义iframe标签的高度与宽度。 属性默认以像素为单位, 但是你可以指定其按比例显示 (如:"80%")。 实例 <iframe loading="lazy" s

  • tornado.web — RequestHandler and Application classes Thread-safety notes Request handlers Entry points Input Output Cookies Other Application configuration Decorators Everything else tornado.template

  • UI /主题框架和组件 LESS支持下表中列出的一些UI/Theme框架 - Sr.No. 框架和描述 1 1pxdeep 它是平坦的Bootstrap 3主题,提供强大的配色方案控件。 2 Bootflat 它是一个基于Bootstrap的开源框架。 3 BootPress 它是一个基于平面文件CMS的PHP框架 4 Bootstrap 它是功能强大的移动第一前端框架,可实现更快,更轻松的Web

  • 本章介绍 Decoder(解码器) Encoder(编码器) Codec(编解码器) 在前面的章节中,我们讨论了连接到拦截操作或数据处理链的不同方式,展示了如何使用 ChannelHandler 及其相关的类来实现几乎任何一种应用程序所需的逻辑。但正如标准架构模式通常有专门的框架,通用处理模式很适合使用目标实现,可以节省我们大量的开发时间和精力。 在这一章,我们将研究编码和解码——数据从一种特定协

  • WLAN框架接口 函数 rt_err_t  rt_wlan_set_mode (const char *dev_name, rt_wlan_mode_t mode)   注册WLAN设备到WLAN设备框架   rt_err_t  rt_wlan_connect (const char *ssid, const char *password)   同步连接热点   rt_err_t  rt_wlan

  • 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。 iframe语法: <iframe src="URL"></iframe> 该URL指向不同的网页。 Iframe - 设置高度与宽度 height 和 width 属性用来定义iframe标签的高度与宽度。 属性默认以像素为单位, 但是你可以指定其按比例显示 (如:"80%")。 <iframe src="demo_iframe.htm