Mybatis的example的or和and查询

springboot项目:直接打印日志来看application.yml

# 日志配置
logging:
  level:
    com:
      hrt:
        zxxc:
          xcgw:
            article:
              dao:
                ArticleDao: debug

1.and查询
默认就是and,往criteria里放条件就ok
例如:
使用时:

ArticleExample example = new ArticleExample();
ArticleExample.Criteria criteria = example.createCriteria();
criteria.andValidityFlagEqualTo("1");
List
list = articleDao.selectByExample(example);

拿到日志
在这里插入图片描述
美化一下sql:

SELECT
	*
FROM
	cms_article 
WHERE
	( VALIDITY_FLAG = 1 ) 
ORDER BY
	RELEASE_TIME DESC 
	LIMIT 10

1.and查询和or查询
or可以有2中方式
① example 建2个criteria,分别写条件
② example.or().and条件 ();
例一:

ArticleExample example = new ArticleExample();
ArticleExample.Criteria criteria1 = example.createCriteria();
criteria1.andValidityFlagEqualTo("1");

ArticleExample.Criteria criteria2 = example.createCriteria();
criteria2.andValidityFlagEqualTo("0");

List
list = articleDao.selectByExample(example);

sql:

SELECT
	* 
FROM
	cms_article 
WHERE
	( VALIDITY_FLAG = 1 OR VALIDITY_FLAG = 0 ) 

例二:

ArticleExample example = new ArticleExample();
ArticleExample.Criteria criteria = example.createCriteria();
criteria.andValidityFlagEqualTo("1");
 for (int i=0;i< categorySecondList.size();i++) {
      Category c = categorySecondList.get(i);
      if(i==0){
              criteria.andCategoryIdEqualTo(c.getCategoryId());
      }else{
              example.or().andCategoryIdEqualTo(c.getCategoryId());}
      }
}

sql:

SELECT
	* 
FROM
	cms_article 
WHERE
	( VALIDITY_FLAG = 1 AND CATEGORY_ID = 206 ) 
	OR ( CATEGORY_ID = 207 ) 

在这里我判断了一下
if(i==0){
criteria.andCategoryIdEqualTo(c.getCategoryId());
}
如果去掉这个判断,就会变成
SELECT *
FROM
cms_article
WHERE
( VALIDITY_FLAG = 1 )
OR ( CATEGORY_ID = 206 )
OR ( CATEGORY_ID = 207 )

记录一下。

你可能感兴趣的:(java,web)