3.MyBatis-Plus增刪改查

文章目錄:
1.MyBatis-Plus註解
2.準備實體類和表結構
3.MyBatis-Plus增刪改查
4.MyBatis-Plus邏輯刪除
5.MyBatis-Plus樂觀鎖插件
6.MyBatis-Plus其他
7.MyBatis-Plus代碼生成器
8.MyBatis-Plus配置類

一、新增

User user = new User();
user.setAge(22).setName("abc").setEmail("[email protected]");
userMapper.insert(user);
/*
Preparing: INSERT INTO user ( ID, NAME, AGE, EMAIL, CREATE_TIME ) VALUES ( ?, ?, ?, ?, ? )
Parameters: 1213426563115225090(Long), abc(String), 22(Integer), [email protected](String), 2020-01-04 19:46:51.682(Timestamp)
 */

二、刪除

@Test
public void testDelete() {
    // 根據 entity 條件,刪除記錄
    userMapper.delete(new QueryWrapper<User>()
            .lambda().gt(User::getAge,100));
    /*
    Preparing: DELETE FROM user WHERE (AGE > ?)
    Parameters: 110(Integer)
     */

    // 刪除(根據ID 批量刪除)
    //userMapper.deleteBatchIds(Arrays.asList(1213428972445007874L,1213428972436619266L,1213428972428230658L));
    /*
    Preparing: DELETE FROM user WHERE ID IN ( ? , ? , ? )
    Parameters: 1213428972445007874(Long), 1213428972436619266(Long), 1213428972428230658(Long)
     */

    // 根據 ID 刪除
    //userMapper.deleteById(1213428972411453441L);
    /*
    Preparing: DELETE FROM user WHERE ID=?
    Parameters: 1213428972411453441(Long)
     */

    // 根據 columnMap 條件,刪除記錄
//        Map<String, Object> map = new HashMap<>();
//        map.put("name", "abc84");
//        map.put("email", "[email protected]");
//        userMapper.deleteByMap(map);
    /*
    Preparing: DELETE FROM user WHERE name = ? AND email = ?
    Parameters: abc84(String), [email protected](String)
     */
}

三、修改

@Test
public void testUpdate() {
    // 根據 ID 修改
//        userMapper.updateById(new User()
//                                .setAge(999)
//                                .setName("abc999")
//                                .setEmail("[email protected]")
//                                .setId(1213435727317135361L));
    /*
    Preparing: UPDATE user SET NAME=?, AGE=?, EMAIL=? WHERE ID=?
    Parameters: abc999(String), 999(Integer), [email protected](String), 1213435727317135361(Long)
     */

    // 根據 whereEntity 條件,更新記錄
    userMapper.update(new User().setName("defg"),Wrappers.<User>lambdaUpdate()
            .set(User::getEmail, "[email protected]")
            .eq(User::getId, 1213435727082254338L)
            .eq(User::getAge, 99));
    /*
    Preparing: UPDATE user SET NAME=?, EMAIL=? WHERE (ID = ? AND AGE = ?)
    Parameters: defg(String), [email protected](String), 1213435727082254338(Long), 99(Integer)
     */
}

四、查詢

@Test
public void testSelect() {
    // 根據 ID 查詢
//        User user = userMapper.selectById(1213435727082254338L);
//        System.out.println(user);
    /*
    Preparing: SELECT * FROM user WHERE ID=?
    Parameters: 1213435727082254338(Long)
     */

    // 根據 entity 條件,查詢一條記錄
//        User user = userMapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, 1213435727082254338L));
//        System.out.println(user);
    /*
    Preparing: SELECT * FROM user WHERE (ID = ?)
    Parameters: 1213435727082254338(Long)
    // 執行結果不唯一時報錯:TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 100
     */

    // 查詢(根據ID 批量查詢)
//        List<User> users = userMapper.selectBatchIds(Arrays.asList(1213435727065477121L, 1213435727082254338L,
//                1213435727090642945L));
//        users.forEach(System.out::println);
    /*
    Preparing: SELECT * FROM user WHERE ID IN ( ? , ? , ? )
    Parameters: 1213435727065477121(Long), 1213435727082254338(Long), 1213435727090642945(Long)
     */

    // 根據 entity 條件,查詢全部記錄
    // 條件查詢官方文檔:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper
//        List<User> users = userMapper.selectList(new QueryWrapper<User>()
//                        .select( "id", "name")
//                        .lambda()
//                        .like(User::getEmail,"abc")
//                        .inSql(User::getId, "SELECT id FROM user WHERE age < 25")
//                        .between(User::getAge,22,99)
//                        // 主動調用or表示緊接着下一個方法不是用and連接!(不調用or則默認爲使用and連接)
//                        .or().eq(User::getName, "abc98")
//                        .last("limit 1"));
//        users.forEach(System.out::println);
    /*
    Preparing: SELECT id,name FROM user WHERE (EMAIL LIKE ? AND ID IN (SELECT id FROM user WHERE age < 25) AND AGE BETWEEN ? AND ? OR NAME = ?) limit 1
    Parameters: %abc%(String), 22(Integer), 99(Integer), abc98(String)
     */

    // 查詢(根據 columnMap 條件)
//        Map<String, Object> map = new HashMap<>();
//        map.put("name", "abc70");
//        map.put("email", "[email protected]");
//        List<User> users = userMapper.selectByMap(map);
//        users.forEach(System.out::println);
    /*
    Preparing: SELECT * FROM user WHERE name = ? AND email = ?
    Parameters: abc70(String), [email protected](String)
     */

    // 根據 Wrapper 條件,查詢全部記錄
//        List<Map<String, Object>> maps = userMapper.selectMaps(null);
//        maps.forEach(System.out::println);
    /*
    Preparing: SELECT * FROM user
     */

    // 根據 Wrapper 條件,查詢全部記錄。注意: 只返回第一個字段的值
//        List<Object> objects = userMapper.selectObjs(null);
//        objects.forEach(System.out::println);
    /*
    Preparing: SELECT ID,NAME,AGE,EMAIL,DEL_FLAG,VERSION,CREATE_TIME FROM user
    // 只返回了id字段的值。
     */

    // 根據 entity 條件,查詢全部記錄(並翻頁)
//        userMapper.selectPage(new Page<>(1, 5), Wrappers.<User>query().orderByAsc("age"));
    /*
    Preparing: SELECT * FROM user ORDER BY age ASC LIMIT ?,?
    Parameters: 0(Long), 5(Long)
     */

    // 根據 Wrapper 條件,查詢總記錄數
    Integer count = userMapper.selectCount(null);
    System.out.println(count);
    /*
    Preparing: SELECT COUNT( 1 ) FROM user
     */
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章