接口mapper需要继承BaseMapper<要操作的类>外加@Mapper

mport org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface AdminUserMapper extendsBaseMapper<AdminUserEntity> {
AdminUserEntity:
@TableName("openapi_admin_user")
@Data
public class AdminUserEntity extends BaseEntity {
@TableId("user_id")
private Long userId;
private String userName;
private String userPassword;
private String userType;
private String status;
private String telephone;
private String isInitPwd;
private Long renterId; /**
* 登录用户 及新增用户的创建人
*/
private String createBy;

BaseEntity:

@Data
@ApiModel("基础实体类")
public abstract class BaseEntity { @ApiModelProperty(value = "创建人")
private String createBy; @ApiModelProperty(value = "更新人")
private String updateBy; @ApiModelProperty(value = "更新时间")
@JsonSerialize(using = JsonDateSerializer.class)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dateUpdated; @ApiModelProperty(value = "创建时间")
@JsonSerialize(using = JsonDateSerializer.class)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dateCreated; }

1:如果有涉及到输入框的查询时,分页

Controller:

@ApiOperation("查询角色列表")
@PostMapping("/list")
public ResponseDto<Page<RoleResponse>> listRoles(@RequestBody @Valid PageWrapper<RoleRequest> pageRequest) {
log.info("/roles/list start");
log.info("【/roles/list】调用roleService层入参: " + pageRequest);
Page page = new Page(pageRequest.getCurrent(), pageRequest.getSize());
if(pageRequest.getDataBody() == null) {
throw new ServiceException(ResponseCode.ValidationError.getCode(), "缺少参数dataBody");
}
Page<RoleResponse> list = roleService.selectRoleListByCondition(page, pageRequest.getDataBody());
log.info("/roles/list end");
return ResponseUtil.success(list); }

PageWrapper:

 */
@Data
public class PageWrapper<T> {
@NumberFormat
private int current = 1;
private int size = 10;
private int total;
private int pages; @Valid
private T dataBody;
}

Repository:(无排序)

*/
public Page<RoleResponse> selectRoleListByCondition(Page pageRequest, RoleRequest request) {
List<RoleResponse> responseList = new ArrayList<>(0); Pagination page = getPageParam(pageRequest); // condition
RoleEntity param = new RoleEntity();
EntityWrapper<RoleEntity> wrapper = new EntityWrapper<>(param);
wrapper.like(StringUtils.isNotBlank(request.getRoleName()), "aa.role_name", request.getRoleName());
wrapper.ge(request.getStart() != null, "aa.date_created", request.getStart() + " 00:00:00");
/* if (StringUtils.isNotEmpty(request.getEnd())) {
wrapper.le("aa.date_updated", request.getEnd() + " 23:59:59");
}*/
wrapper.le(request.getEnd() != null,"aa.date_created", request.getEnd() + " 23:59:59");
wrapper.eq(request.getRoleId() != null, "aa.role_id", request.getRoleId());
log.info("selectRoleListByCondition:: {}", wrapper.getSqlSegment()); List<RoleResponse> entities = null;
try {
// 查询角色列表
entities = roleMapper.selectRolesByPage(page, wrapper);
if (CollectionUtils.isEmpty(entities)) {
log.warn("No roles were found.");
return buildResponse(page, responseList);
}
private Page<RoleResponse> buildResponse(Pagination page, List<RoleResponse> responses) {
Page<RoleResponse> result = new Page<>(page.getCurrent(), page.getSize());
result.setRecords(responses);
result.setTotal(page.getTotal());
return result;
}
 

Repository(排序)

public List<UserResponse> listUsers(UserRequest request) {
AdminUserEntity userEntity = new AdminUserEntity();
EntityWrapper<AdminUserEntity> ew = new EntityWrapper<>(userEntity);
ew.eq("status", CommonFlagEnum.Yes.getCode()).eq(StringUtils.isNotBlank(request.getCompanyName()),
"company_name", request.getCompanyName()).eq(StringUtils.isNotBlank(request.getUserType()),
"user_type", request.getUserType()).eq(StringUtils.isNotBlank(request.getUserName()),
"um_id", request.getUserName()).like(StringUtils.isNotBlank(request.getUserName()),
"user_name", request.getUserName());
//排序列
List<String> orderColumns = new ArrayList<>();
orderColumns.add("date_created"); ew.orderDesc(orderColumns);
log.info("sql: {}, {}", ew.getSqlSelect(), ew.getSqlSegment()); try {
List<AdminUserEntity> entities = userMapper.selectList(ew);

Mapper:

List<RoleResponse> selectRolesByPage(Pagination pagination, @Param("ew") Wrapper<RoleEntity> wrapper);

xml:

<select id="selectRolesByPage" resultType="com.paic.ocss.gateway.model.dto.role.RoleResponse">
SELECT
aa.role_id,
aa.role_name,
aa.STATUS,
aa.date_created,
aa.create_by,
aa.date_updated,
aa.update_by,
aa.role_desc,
bb.resource_ids
FROM
openapi_admin_role aa
LEFT JOIN ( SELECT GROUP_CONCAT( r.resource_id ) resource_ids, r.role_id FROM
openapi_admin_role_resource_mapping r GROUP BY r.role_id ) bb ON aa.role_id = bb.role_id
<where>
${ew.sqlSegment}
</where>
order by date_created desc </select>

2:如果没有涉及到输入框的查询时,分页,而是简单的增,删,改,查:

public void modify(UserModify userRequest) {

    AdminUserEntity userEntity = new AdminUserEntity();
userEntity.setUserId(userRequest.getUserId());
if (StringUtils.isNotBlank(userRequest.getTelephone())) {
userEntity.setTelephone(userRequest.getTelephone());
}
if (StringUtils.isNotBlank(userRequest.getUserName())) {
userEntity.setUserName(userRequest.getUserName());
}
if (StringUtils.isNotBlank(userRequest.getStatus())) {
userEntity.setStatus(userRequest.getStatus());
}
if (userRequest.getRenterId() != null) {
userEntity.setRenterId(userRequest.getRenterId());
} String loginAccount = SecurityUtils.getSubject().getPrincipal().toString();
userEntity.setUpdateBy(loginAccount); if (CommonFlagEnum.Yes.getCode().equals(userRequest.getIsInitPwd())) {
//存储到db的密码
userEntity.setUserPassword(SHA256Util.getSHA256StrJava(DEFAULT_PASSWORD));
} else if(userRequest.getUserPassword() != null){
userEntity.setUserPassword(SHA256Util.getSHA256StrJava(userRequest.getUserPassword()));
}
//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
//userEntity.setDateUpdated(format.format(new Date()));
userEntity.setDateUpdated(new Date()); try {
int count = userMapper.updateById(userEntity);

Mybatis-plus的使用的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  3. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  4. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  5. mybatis plugins实现项目【全局】读写分离

    在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...

  6. MyBatis基础入门--知识点总结

    对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...

  7. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  8. MyBatis源码分析(一)开篇

    源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...

  9. (整理)MyBatis入门教程(一)

    本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...

  10. MyBatis6:MyBatis集成Spring事物管理(下篇)

    前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...

随机推荐

  1. 洛谷P3150 pb的游戏(1) 题解

    题目链接: https://www.luogu.org/problemnew/show/P3150 分析: 这道题是一道典型的入门博弈论.我们可以进行如下考虑: 先引入一个奇偶的性质: 奇数=奇数+偶 ...

  2. Excel催化剂开源第45波-按原图大小导出图片

    从Excel中导出图片,是一个很常规的需求,也有一些久旧不衰的界面操作法小技巧从OpenXml文件中批量导出,在VBA开发中,也会使用Chart对象的背景图的技巧来导出.总体来说,和真正想要的效果还是 ...

  3. Shell学习心得(四):流程控制

    一.if else 1. if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): ]; ...

  4. WPF音乐电台

    最近一两年都没写过wpf相关的项目了,本来就不太熟的一些技巧全忘光啦,为了重新拾起这点东西,就花了几天时间做了个小demo,大致功能就是读取豆瓣电台api,获取歌单列表听歌.最开始是参考网上现有的例子 ...

  5. 深入理解Java中的AQS

    AQS概述 ​ AbstractQueuedSynchronizer抽象队列同步器简称AQS,它是实现同步器的基础组件,juc下面Lock的实现以及一些并发工具类就是通过AQS来实现的,这里我们通过A ...

  6. GStreamer流媒体知识介绍

    GStreamer框架 1.GStreamer是什么? 众所周知,Microsoft's Windows和Apple's MacOS对多媒体设备.多媒体创作.播放和实时处理等方面都有很好的支持,而Li ...

  7. [Pulsar系列] 10分钟学会Pulsar消息系统概念

    Apache Pulsar Pulsar是一个支持多租户的.高性能的服务与服务之间消息通讯的解决方案,最初由雅虎开发,现在由Apache软件基金会管理. Pulsar的主要特性如下: Pulsar实例 ...

  8. 【Java例题】1.4圆类

    4.定义一个圆类,包括半径.构造方法.计算周长方法, 计算面积方法和显示半径方法. 然后编写一个主类,在其主方法中通过定义一个圆对象来 显示圆的半径.周长和面积. package study; imp ...

  9. 第十章 Centos7-系统进程管理 随堂笔记

    第十章 Centos7-系统进程管理 本节所讲内容: 10.1 进程概述和ps查看进程工具 10.2 uptime查看系统负载-top动态管理进程 10.3 前后台进程切换- nice进程优先级-实战 ...

  10. Vue系列:Websocket 使用配置

    WebSocket 是什么? WebSocket  是一种网络通信协议.而且是在 HTML5 才开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. 为什么需要 WebSocket ? 了解计算 ...