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
     */
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章