TinyQuery 简单易用的JPQL Query Builder

TinyQuery是一个简单易用的JPQL Query Builder。灵感来自于使用spring data JPA和JPA自带的criteria query时遇到的诸多不便。

主要特点:

  • 简单、易用
  • 零学习成本
  • 可读性接近SQL语句
  • 灵活的方法链式的书写

Github: https://github.com/sebastian1118/tinyspring

假设我们有一个Entity叫 User,我们需要一个对应的DAO来操作这个Entity。
只需要简单的创建一个UserDao,继承AbstractDao<User>,实现其中的方法getEntityClass() 并返回DAO要管理的Entity即可。

@Repository
@Transactional
public class UserDao extends AbstractDao<User> {

    @Override
    protected Class<User> getEntityClass() {   
        return User.class;
    }
}

一个简单的DAO写好了。这个DAO已经从父类里继承了许多开箱即用的方法,包括 persist() merge() remove() findById() findAll() totalCount() 等等。

如果你想构造新的查询,调用 beginQuery() 开始构造查询。

例如:

如果你想查找一个叫’bob’的用户:

import static org.triiskelion.tinyspring.dao.TinyPredicate.equal;

User result = userDao.beginQuery()
                   .select()
                   .where(equal("username", "bob"))
                   .getFirstResult();

如果你想根据用户名密码鉴权:

boolean authSucess = userDao.beginQuery()
                          .select()
                          .where(equal("username","bob"))
                          .and(equal("password","123456"))
                          .hasResult();

  boolean authSucess = userDao.beginQuery().select()
                          .where(and(equal("username", "bob"), equal("password", "123456")))
                          .hasResult();

    boolean authSucess = userDao.beginQuery().select()
                          .where(equal("username", "bob").and(equal("password", "123456")))
                          .hasResult();

三种写法都是正确的。

如果要写非常复杂的查询或者只是更喜欢JPQL,可以这样写:

List<User> resultList = userDao.begeinQuery()
                               .query("SELECT m FROM User m WHERE m.signInTime BETWEEN :a AND :b")
                               .param("a", new Date("2014-07-01"))
                               .param("b", new Date("2014-07-31"))
                               .getResultList();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值