mybatis createcriteria和or的区别说明

网友投稿 268 2022-10-10


mybatis createcriteria和or的区别说明

createcriteria和or的区别

mybatis generator插件生成的example中,有createcriteria和or方法,他们有什么区别呢?

通过源码,能很清楚的看出差别

createcriteria,当没有规则时,则加入到现有规则,但有规则时,不再加入到现有规则,只是返回创建的规则

public Criteria createCriteria() {

Criteria criteria = createCriteriaInternal();

if (oredCriteria.size() == 0) {

oredCriteria.add(criteria);

}

return criteria;

}

or,创建的规则,加入到规则集中,并且是or的关系

public Criteria or() {

Criteria criteria = createCriteriaInternal();

oredCriteria.add(criteria);

return criteria;

}

mybatis中Example的and和or

能用Example代码解决的,我都不会去写个SQL放在项目里。我希望让代码尽量优雅、易读,所以这里记录一下关于MyBatis中Example的and和or的使用,主要是如下两种场景:

where (条件1 and 条件2) or (条件3 and 条件4)

where (条件1 and 条件2) and (条件3 or 条件4)

where (条件1 and 条件2) or (条件3 and 条件4)

//条件1 and 条件2

example.createCriteria()

.andEqualTo("isDeleted",IsDeleted.NOT_DELETED)

.anRXpegrdEqualTo("name", projectCatalogEntity.getName());

//or (条件3 and 条件4)

example.or(example.createCriteria()

.andEqualTo("isDeleted",IsDeleted.NOT_DELETED)

.andEqualTo("code", projectCatalogEntity.getCode(RXpegr)));

WHERE ( is_deleted = ? and name = ? ) or ( is_deleted = ? and code = ? )

where (条件1 and 条件2) and (条件3 or 条件4)

//条件1 and 条件2

example.createCriteria()

.aRXpegrndEqualTo("isDeleted",IsDeleted.NOT_DELETED))

.andEqualTo("parentId", projectCatalogEntity.getParentId());

//and (条件3 or 条件4)

example.and(example.createCriteria()

.andEqualTo("name", projectCatalogEntity.getName())

.orEqualTo("code", projectCatalogEntity.getCode()));

WHERE ( is_deleted = ? and parent_id = ? ) and ( name = ? or code = ? )


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DDoS --- 分布式拒绝服务(Disturbuted Denial of Service)(ddos高防ip)
下一篇:各开发语言的程序加密方法(一)(编写加密函数)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~