MyBatisPlus-4-條件構造器
條件構造器
1.1 EntityWrapper
- Mybatis-Plus 通過 EntityWrapper(簡稱 EW,MP 封裝的一個查詢條件構造器)或者 Condition(與 EW 類似) 來構建查詢條件,簡單便捷!
- 實體包裝器,主要用於處理 sql 拼接,排序,實體引數查詢等!
- 實體包裝器 EntityWrapper 繼承 Wrapper
注意: 使用的是資料庫欄位,不是 Java 屬性!
2.1 EW
2.1.1 查詢
public class TestMPEW01 { private ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml"); private EmployeeMapper employeeMapper = ioc.getBean("employeeMapper", EmployeeMapper.class); /** * 條件構造器 查詢操作 */ @Test public void testEntityWrapperSelect() { //我們需要分頁查詢tbl_employee表中,年齡在18~50之間且性別為男且姓名為Tom的所有使用者 List<Employee> emps = employeeMapper.selectPage(new Page<Employee>(1, 2), new EntityWrapper<Employee>() .between("age", 18, 50) .eq("gender", 1) .eq("last_name", "Tom") ); System.out.println(emps); // 查詢tbl_employee表中, 性別為女並且名字中帶有"老師" 或者 郵箱中帶有"a" List<Employee> emps3 = employeeMapper.selectList(new EntityWrapper<Employee>() .eq("gender", 0) .like("last_name", "老師") //.or() // SQL: (gender = ? AND last_name LIKE ? OR email LIKE ?) .orNew() // SQL: (gender = ? AND last_name LIKE ?) OR (email LIKE ?) .like("email", "a") ); System.out.println(emps3); // 查詢性別為女的, 根據age進行排序(asc/desc), 簡單分頁 List<Employee> emps4 = employeeMapper.selectList(new EntityWrapper<Employee>() .eq("gender", 0) .orderBy("age") //.orderDesc(Arrays.asList(new String [] {"age"})) .last("desc limit 1,3") ); System.out.println(emps4); } }
2.1.2 更改
@Test public void testEntityWrapperUpdate() { Employee employee = new Employee(); employee.setLastName("瑪麗老師"); employee.setEmail("[email protected]"); employee.setGender(0); employeeMapper.update(employee, new EntityWrapper<Employee>() .eq("last_name", "Tom") .eq("age", 44) ); }
2.1.3 刪除
@Test
public void testEntityWrapperDelete() {
employeeMapper.delete(new EntityWrapper<Employee>()
.eq("last_name", "Tom")
.eq("age", 45)
);
}
2.1.4 Condition
List<Employee> emps2 = employeeMapper.selectPage(new Page<Employee>(1, 2), Condition.create() .between("age", 18, 50) .eq("gender", "1") .eq("last_name", "Tom") ); System.out.println(emps2);
3.1 條件引數說明
查詢方式 | 說明
---|---
setSqlSelect | 設定 SELECT 查詢欄位
where | WHERE 語句,拼接 + WHERE 條件
and | AND 語句,拼接 + AND 欄位=值
andNew | AND 語句,拼接 + AND (欄位=值)
or | OR 語句,拼接 + OR 欄位=值
orNew | OR 語句,拼接 + OR (欄位=值)
eq | 等於=
allEq | 基於 map 內容等於=
ne | 不等於<>
gt | 大於>
ge | 大於等於>=
lt | 小於<
le | 小於等於<=
like | 模糊查詢 LIKE
notLike | 模糊查詢 NOT LIKE
in | IN 查詢
notIn | NOT IN 查詢
isNull | NULL 值查詢
isNotNull | IS NOT NULL
groupBy | 分組 GROUP BY
having | HAVING 關鍵詞
orderBy | 排序 ORDER BY
orderAsc | ASC 排序 ORDER BY
orderDesc | DESC 排序 ORDER BY
exists | EXISTS 條件語句
notExists | NOT EXISTS 條件語句
between | BETWEEN 條件語句
notBetween | NOT BETWEEN 條件語句
addFilter | 自由拼接 SQL
last | 拼接在最後,例如:last("LIMIT 1")
4.1 小結
Integer selectCount(@Param("ew") Wrapper<T> var1);
List<T> selectList(@Param("ew") Wrapper<T> var1);
List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> var1);
List<Object> selectObjs(@Param("ew") Wrapper<T> var1);
List<T> selectPage(RowBounds var1, @Param("ew") Wrapper<T> var2);
List<Map<String, Object>> selectMapsPage(RowBounds var1, @Param("ew") Wrapper<T> var2);
Integer update(@Param("et") T var1, @Param("ew") Wrapper<T> var2);
Integer updateForSet(@Param("setStr") String var1, @Param("ew") Wrapper<T> var2);
Integer delete(@Param("ew") Wrapper<T