Mybatis Criteria條件查詢
Criterion
Criterion是最基本,最底層的Where條件,用于字段級的篩選。
Criteria
Criteria包含一個Cretiron的集合,每一個Criteria對象內包含的Cretiron之間是由AND連接的,是邏輯與的關系。
其它
Example類的distinct字段用于指定DISTINCT查詢。
orderByClause字段用于指定ORDER BY條件,這個條件沒有構造方法,直接通過傳遞字符串值指定。
代碼示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import java.io.IOException; import java.io.Reader; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.log4j.pattern.ClassNamePatternConverter; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.itcast.ssm.mapper.ItemsMapper; import cn.itcast.ssm.po.ItemsExample; public class Student { public static void main(String[] args) throws IOException { /*方式一 */ ItemsExample itemsExample1 = new ItemsExample(); itemsExample1.or().andIdEqualTo(5).andNameIsNotNull(); itemsExample1.or().andPicEqualTo("xxx").andPicIsNull(); List<Integer> fieldValues = new ArrayList<Integer>(); fieldValues.add(8); fieldValues.add(11); fieldValues.add(14); fieldValues.add(22); itemsExample1.or().andIdIn(fieldValues); itemsExample1.or().andIdBetween(5, 9); /* 方式二 criteria1與criteria2是or的關系 */ ItemsExample itemsExample2 = new ItemsExample(); ItemsExample.Criteria criteria1 = itemsExample2.createCriteria(); criteria1.andIdIsNull(); criteria1.andPriceEqualTo(( float ) 3 ); ItemsExample.Criteria criteria2 = itemsExample2.createCriteria(); criteria2.andNameIsNull(); criteria2.andIdGreaterThanOrEqualTo( 5 ); itemsExample2.or(criteria2); //方式一和方式二是等價的 // spring獲取mapper代理對象 ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "classpath:applicationContext.xml" ); ItemsMapper itemsMapper = (ItemsMapper) applicationContext.getBean( "itemsMapper" ); itemsMapper.countByExample(itemsExample2); // 獲取SqlSessionFactory String resource = "SqlMapConfig.xml" ; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader); // 獲取SqlSession SqlSession sqlSession = sqlMapper.openSession(); } } |
Mybatis的Criteria用法總結
用一對多內斂查詢的時候,有的老鐵提出left join in 但是我和同事商討結果是用代碼寫處各種list然后stream存到數據庫中,這樣一來把計算壓力從數據庫存入服務器,當并發量高了,這樣做的好處就體現在性能方面了。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/qq_29645505/article/details/90086644