通用JdbcDao更新,增加括号支持

分类: 开源软件 0人评论 selfly 1年前发布

本次更新到 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[] { "javaer@live.com" }).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[] { "javaer@live.com" }).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 = ?
上一篇:
下一篇:

你可能感兴趣的文章

0 条评论