mybatis-plus是对mybatis的增强,不是替代。从某种程度上来说,可以完全替代dao和mapper
1、mybatis-plus条件与sql的对应关系

2、mybatis-plus接口使用最佳实践
使用LambdaQueryWrapper可以避免实体和数据对应关系写错,推荐使用。
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
* <p>
* https://www.renren.io
* <p>
* 版权所有,侵权必究!
*/
package io.renren.modules.sys.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.renren.common.utils.PageUtils;
import io.renren.common.utils.R;
import io.renren.modules.sys.entity.SysUserEntity;
import io.renren.modules.sys.service.SysUserService;
import io.renren.util.BeanCopyUtil;
import io.renren.util.ContextUtil;
import io.renren.util.Utils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* BaseMapper方法测试
*
* @author Mark sunlightcs@gmail.com
*/
@RestController
@RequestMapping("/sys/user/test")
@Api(tags = "BaseMapper测试按理")
public class BaseMapperTestController extends AbstractController {
@Autowired
private SysUserService sysUserService;
/**
* 根据 ID 查询
*/
@GetMapping("/{id}")
@ApiOperation("根据 ID 查询")
public R list(@PathVariable Long id) {
SysUserEntity entity = sysUserService.getById(id);
return R.ok().put("data", entity);
}
/**
* 查询(根据ID 批量查询)
*/
@PostMapping("/listByIds")
@ApiOperation("查询(根据ID 批量查询)")
public R listByIds(@RequestBody List<Long> ids) {
Collection<SysUserEntity> list = sysUserService.listByIds(ids);
return R.ok().put("data", list);
}
/**
* 查询(根据 columnMap 条件)
* todo
*/
@PostMapping("/selectByMap")
@ApiOperation("查询(根据 columnMap 条件): ①字段为数据库字段 ②精确匹配(包括日期型)")
public R selectByMap(@RequestBody Map<String, Object> columnMap) {
Collection<SysUserEntity> list = sysUserService.listByMap(columnMap);
return R.ok().put("data", list);
}
/**
* 根据 Wrapper,查询一条记录
*/
@PostMapping("/getOne")
@ApiOperation("根据 Wrapper,查询一条记录(不会抛异常)")
public R getOne() {
SysUserEntity list = sysUserService.getOne(null, false);
return R.ok().put("data", list);
}
/**
* 根据 Wrapper,查询一条记录
*/
@PostMapping("/findOne")
@ApiOperation("根据 Wrapper,查询一条记录(必须保证要查询出一条,否则会抛异常)")
public R findOne() {
SysUserEntity list = sysUserService.getOne(null);
return R.ok().put("data", list);
}
/**
* 根据 entity 条件,查询全部记录
* <p>
* 实体对象封装操作类(可以为 null)
*/
@PostMapping("/selectList")
@ApiOperation("根据 entity 条件,查询全部记录")
public R selectList(@ApiParam(value = "多个字段like") @RequestParam(required = false) String keyword,
@ApiParam(value = "用户名称") @RequestParam(required = false) String username,
@ApiParam(value = "用户ID") @RequestParam(required = false) Long userId,
@ApiParam(value = "创建时间开始") @RequestParam(required = false) String beginTime,
@ApiParam(value = "创建时间结束") @RequestParam(required = false) String endTime,
@ApiParam(value = "排序字段:userId)") @RequestParam(required = false) String orderby,
@ApiParam(value = "升序、降序;默认升序") @RequestParam(required = false) Boolean asc) {
Map<String, Object> params = ContextUtil.getParams();
//初始化时间条件
Utils.initTimeParam(params);
//准备排序字段
Map<String, String> orderMap = new HashMap<>();
orderMap.put("userId", "user_id");
String order = orderMap.get(orderby);
//
Collection<SysUserEntity> list = sysUserService.list(new QueryWrapper<SysUserEntity>()
.like(!StringUtils.isEmpty(username), "username", username)
.and(!StringUtils.isEmpty(keyword), consumer -> consumer.like("username", keyword).or().like("mobile", keyword))
.eq(userId != null, "user_id", userId)
.ge(!StringUtils.isEmpty(beginTime), "create_time", params.get("beginTime"))
.le(!StringUtils.isEmpty(endTime), "create_time", params.get("endTime"))
//排序
.orderBy(!StringUtils.isEmpty(order), asc == null || asc == true, order)
);
return R.ok().put("data", list);
}
/**
* 根据 Wrapper 条件,查询全部记录
* <p>
* 实体对象封装操作类(可以为 null)
*/
@PostMapping("/getMap")
@ApiOperation("根据 Wrapper 条件,查询全部记录")
public R getMap() {
Map<String, Object> map = sysUserService.getMap(new QueryWrapper<>());
return R.ok().put("data", map);
}
/**
* 根据 Wrapper 条件,查询一条记录
* <p>
* 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
* * @param mapper 转换函数
*/
@PostMapping("/getObject")
@ApiOperation("根据 Wrapper 条件,查询全部记录")
public R getObject() {
List<Object> objects = sysUserService.listObjs();
return R.ok().put("data", objects);
}
/**
* 根据 Wrapper 条件,查询一条记录
* <p>
* 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
* * @param mapper 转换函数
*/
@PostMapping("/lambdaQuery")
@ApiOperation("根据 Wrapper 条件,lambdaQuery")
public R lambdaQuery() {
LambdaQueryWrapper<SysUserEntity> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.eq(SysUserEntity::getUserId, "1");
List<Object> userList = sysUserService.getBaseMapper().selectObjs(lambdaQuery);
userList.forEach(System.out::println);
return R.ok().put("data", userList);
}
/**
* 根据 entity 条件,查询全部记录
* <p>
* 实体对象封装操作类(可以为 null)
*/
@PostMapping("/lambdaQueryList")
@ApiOperation("根据 entity 条件,查询全部记录")
public R lambdaQueryList(@ApiParam(value = "多个字段like") @RequestParam(required = false) String keyword,
@ApiParam(value = "用户名称") @RequestParam(required = false) String username,
@ApiParam(value = "用户ID") @RequestParam(required = false) Long userId,
@ApiParam(value = "创建时间开始") @RequestParam(required = false) String beginTime,
@ApiParam(value = "创建时间结束") @RequestParam(required = false) String endTime,
@ApiParam(value = "排序字段:userId)") @RequestParam(required = false) String orderby,
@ApiParam(value = "升序、降序;默认升序") @RequestParam(required = false) Boolean asc) {
Map<String, Object> params = ContextUtil.getParams();
//初始化时间条件
Utils.initTimeParam(params);
//准备排序字段
Map<String, String> orderMap = new HashMap<>();
orderMap.put("userId", "user_id");
String order = orderMap.get(orderby);
//
LambdaQueryWrapper<SysUserEntity> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.like(!StringUtils.isEmpty(username), SysUserEntity::getUsername, username)
.and(!StringUtils.isEmpty(keyword), consumer -> consumer.like(SysUserEntity::getUsername, keyword).or().like(SysUserEntity::getMobile, keyword))
.eq(userId != null, SysUserEntity::getUserId, userId)
.ge(!StringUtils.isEmpty(beginTime), SysUserEntity::getCreateTime, params.get("beginTime"))
.le(!StringUtils.isEmpty(endTime), SysUserEntity::getCreateTime, params.get("endTime"))
//排序
.orderBy(!StringUtils.isEmpty(order), asc == null || asc == true, SysUserEntity::getUserId);
List<SysUserEntity> list = sysUserService.list(lambdaQuery);
return R.ok().put("data", list);
}
/**
* 翻页查询
* <p>
*/
@PostMapping("/page")
@ApiOperation("翻页查询")
public R page() {
Map<String, Object> params = ContextUtil.getParams();
PageUtils pageUtils = sysUserService.queryPage(params);
return R.ok().put("data", pageUtils);
}
}
网友评论