本文隶属于专题系列: 通用数据库访问层dexcoder-dal

注意:本组件已重构并全新发布,更加方便易于使用。代码全部开源,详情访问 Github仓库码云

本次更新到 2015-10-9 V1.0.2版本

![spring-jdbc2][]

该版本增加了括号的支持,可以实现不同的属性在括号内or的情况,示例:

Criteria criteria = Criteria.create(User.class)
    .where("userType", new Object[] { "1" }).beginBracket()
    .and("loginName", new Object[] { "selfly" })
    .or("email", new Object[] { "[email protected]" }).endBracket()
    .and("password", new Object[] { "123456" });
User user = jdbcDao.querySingleResult(criteria);

以上代码将生成以下SQL语句:

SELECT LOGIN_NAME,... FROM USER WHERE USER_TYPE = ? and (LOGIN_NAME = ? or EMAIL = ?) and PASSWORD = ?

beginBracket() 默认括号前为and操作符,和 beginBracket("and") 等效,之后的第一个 and("loginName", new Object[] { "selfly" }) ,这里的 and 将被忽略(本来想再提供一个方法,想不出什么好的方法名,再者方法太多了也不好所以直接忽略吧,使用者知道就行)。

如果使用 or 参数 beginBracket("or") ,如下:

Criteria criteria = Criteria.create(User.class)
    .where("userType", new Object[] { "1" }).beginBracket("or")
    .and("loginName", new Object[] { "selfly" })
    .or("email", new Object[] { "[email protected]" }).endBracket()
    .and("password", new Object[] { "123456" });
User user = jdbcDao.querySingleResult(criteria);

将生成SQL语句,注意括号前的操作符变成了 or

SELECT LOGIN_NAME,... FROM USER WHERE USER_TYPE = ? or (LOGIN_NAME = ? or EMAIL = ?) and PASSWORD = ?

[spring-jdbc2]:

你可能感兴趣的内容
Spring 之 JMS 监听JMS消息 收藏,4406 浏览
Spring 之 JMS 基于JMS的RPC 收藏,3253 浏览
Spring的BeanFactory和FactoryBean 收藏,10405 浏览
0条评论

selfly

交流QQ群:32261424
Owner