1. 程式人生 > >MyBatisPlus-4-條件構造器

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