ITPub博客

首页 > 应用开发 > > Java ORM 框架 QuickDAO

Java ORM 框架 QuickDAO

作者:skyweave 时间:2019-10-14 10:06:06 0 删除 编辑

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实现)

commons-dbcp

commons-dbcp

1.4

2.1 使用maven

cn.schoolwow

QuickDAO

2.6

2.2 下载jar包

请点击此处下载jar包

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 = 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 userList = dao.query(User.class)

.addNotEmptyQuery("username")

.getList();

3.3 外键查询

List userList = dao.query(User.class)

.join(UserSetting.class,"id","userId")

.addNotEmptyQuery("setting")

.done()

.getList();

3.3 分页排序查询

List 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能够自动匹配实体类和数据库表,自动添加新增的实体类字段信息.

实体类注解

注解名说明示例@ColumnType自定义数据类型@ColumnType("varchar(1024)"),字符型长度默认为255@Comment为字段添加注释@Comment("用户id")@DefaultValue默认值@DefaultValue("0")@ForeignKey字段外键属性@ForeignKey(table=User.class,field="id",foreignKeyOption=ForeignKeyOption.RESTRICT)@Id标记主键字段@Id@Ignore忽略该字段/忽略该类@Ignore@NotNull是否非空@NotNull@Unique是否唯一,多个@Unique注解则将建立联合唯一索引@Unique

若实体无@Id注解,则变量为id且类型为long型的成员属性将被标记为主键

实例

User类的username属性非空且唯一

User{

private long id;

@NotNull

@Unique

private String username;

}

设置User类的password长度为16位

User{

private long id;

@ColumnType("varchar(16)")

private String username;

}

忽略address属性

User{

private long id;

@Ignore

private String address;

}

设置User类age属性默认为20

User{

private long id;

@DefaultValue("20")

private int age;

}

为age添加注释

User{

@Comment("用户id")

private long id;

@Comment("用户年龄")

private int age;

}

标记主键字段

User{

@id

private long uid;

}

事务功能

QuickDAO基于JDBC提供了事务功能.

API说明void startTransaction();开启事务功能Savepoint setSavePoint(String name);设置保存点void rollback();回滚void rollback(Savepoint savePoint);回滚到设置的保存点void commit();提交事务void endTransaction();结束事务

注意,调用endTransaction()方法不会自动提交事务,当开启事务功能时,请一定记住手动调用commit()方法提交事务.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/834/viewspace-3153781/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    134
  • 访问量
    895