MyBatis-Plus中的基本CRUD在内置的BaseMapper中都已得到了实现,我们可以直接使用,接口如下:
public interface BaseMapper<T> extends Mapper<T> {
int insert(T entity);
int deleteById(Serializable id);
int deleteById(T entity);
int deleteByMap(@Param("cm") Map<String, Object> columnMap);
int delete(@Param("ew") Wrapper<T> queryWrapper);
int deleteBatchIds(@Param("coll") Collection<?> idList);
int updateById(@Param("et") T entity);
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
T selectById(Serializable id);
List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
default T selectOne(@Param("ew") Wrapper<T> queryWrapper) {
List<T> ts = this.selectList(queryWrapper);
if (CollectionUtils.isNotEmpty(ts)) {
if (ts.size() != 1) {
throw ExceptionUtils.mpe("One record is expected, but the query result is multiple records", new Object[0]);
} else {
return ts.get(0);
}
} else {
return null;
}
}
default boolean exists(Wrapper<T> queryWrapper) {
Long count = this.selectCount(queryWrapper);
return null != count && count > 0L;
}
Long selectCount(@Param("ew") Wrapper<T> queryWrapper);
List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
<P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);
<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param("ew") Wrapper<T> queryWrapper);
}
每个接口的应用例子:
@SpringBootTest
public class MybatisPlusTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectList(){
//selectList()根据MP内置的条件构造器查询一个list集合,null表示没有条件,即查询所有
userMapper.selectList(null).forEach(System.out::println);
}
//int insert(T entity);
@Test
public void testInsert(){
User user = new User(null, "张三", 23, "zhangsan@qcby.com");
//INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
int result = userMapper.insert(user);
System.out.println("受影响行数:"+result);
//1475754982694199298
System.out.println("id自动获取:"+user.getId());
}
//int deleteById(Serializable id);
//int deleteById(T entity);
@Test
public void testDeleteById(){
//通过id删除用户信息
//DELETE FROM user WHERE id=?
int result = userMapper.deleteById(6L);
System.out.println("id删除受影响行数:"+result);
//实体
User user = new User(6L, "张三", 23, "zhangsan@qcby.com");
result = userMapper.deleteById(user);
System.out.println("实体删除受影响行数:"+result);
}
//int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
@Test
public void testDeleteByMap(){
//根据map集合中所设置的条件删除记录
//DELETE FROM user WHERE name = ? AND age = ?
Map<String, Object> map = new HashMap<>();
map.put("age", 23);
map.put("name", "张三");
int result = userMapper.deleteByMap(map);
System.out.println("受影响行数:"+result);
}
//int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void testDeleteByQueryWrapper(){
// 创建 QueryWrapper 对象
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 添加查询条件:age 等于指定值
queryWrapper.eq("age", 23);
int result = userMapper.delete(queryWrapper);
System.out.println("受影响行数:"+result);
}
//int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
@Test
public void testDeleteByList(){
List<Long> idList = Arrays.asList(5L, 6L);
int result = userMapper.deleteBatchIds(idList);
System.out.println("受影响行数:"+result);
}
//int updateById(@Param(Constants.ENTITY) T entity);
@Test
public void testUpdateById(){
User user = new User(4L, "admin", 22, null);
//UPDATE user SET name=?, age=? WHERE id=?
int result = userMapper.updateById(user);
System.out.println("受影响行数:"+result);
}
//int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
@Test
public void testUpdateAgeByName(){
User user = new User();
user.setAge(26);
// 创建 QueryWrapper 对象,构建更新条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三");
int result = userMapper.update(user , queryWrapper);
System.out.println("受影响行数:"+result);
}
//T selectById(Serializable id);
@Test
public void testSelectById(){
User user = userMapper.selectById(1);
System.out.println("aaaaaaaaaaaaaa"+user);
}
//List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
@Test
public void testSelectByList(){
List<Long> idList = Arrays.asList(1L, 2L, 3L);
List<User> users = userMapper.selectBatchIds(idList);
for (User user : users) {
System.out.println(user);
}
}
//List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
@Test
public void testSelectByMap(){
Map<String, Object> map = new HashMap<>();
map.put("age", 26);
map.put("name", "张三");
List<User> users = userMapper.selectByMap(map);
System.out.println(users);
}
//List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void testSelectAllList(){
//查询所有用户信息
//SELECT id,name,age,email FROM user
List<User> list = userMapper.selectList(null);
list.forEach(System.out::println);
}
//default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper){}
@Test
public void testSelectOne(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Tom");
User user = userMapper.selectOne(queryWrapper);
System.out.println(user);
}
//Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void testSelectCount(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 26);
Long numbers = userMapper.selectCount(queryWrapper);
System.out.println("年龄为26的人数为:"+numbers);
}
//List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void testselectObjs(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 26);
List<Object> ids = userMapper.selectObjs(queryWrapper);
System.out.println("年龄为 26 的用户的第一个字段值列表:"+ids);
}
//<P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void testSelectPage(){
int currentPage = 2;
int pageSize = 1;
Page<User> page = new Page<>(currentPage, pageSize);
// 创建 QueryWrapper 对象,构建查询条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 26);
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
System.out.println("当前页码: " + userPage.getCurrent());
System.out.println("每页记录数: " + userPage.getSize());
}
//<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void testSelectMapsPage(){
int currentPage = 2;
int pageSize = 1;
Page<Map<String,Object>> page = new Page<>(currentPage, pageSize);
// 创建 QueryWrapper 对象,构建查询条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 26);
IPage<Map<String, Object>> userPage = userMapper.selectMapsPage(page, queryWrapper);
System.out.println("当前页码: " + userPage.getCurrent());
System.out.println("每页记录数: " + userPage.getSize());
}
}
注:
Wrapper类型的形参:条件构造器,可针 对于SQL语句设置不同的条件,若没有条件,则可以为该形参赋值null,即查询(删除/修改)所有数据