springboot整合通用Mapper(tk.mybatis)实现新增、修改、删除、查看、分页

3 篇文章 0 订阅
2 篇文章 0 订阅

运行环境

jdk版本:jdk1.8.0_202
springboot版本:2.2.0
mysql版本:5.6.31

启动MySQL

命令:service mysql start
在这里插入图片描述

  • 查看防火墙状态
    命令:firewall-cmd --state
  • 关闭防火墙
    命令:systemctl stop firewalld.service
    在这里插入图片描述

springboot整合通用Mapper

1、在pom.xml中添加依赖包

        <!--通用Mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>

2、创建用户信息实体类(SysUser.java)

package com.jeff.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.Table;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
import com.jeff.utils.DateUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * @author Jeff
 * @description 用户实体类
 * @date 2019/10/27
 */
@Data
@Table(name = "sys_user")
@EqualsAndHashCode(callSuper = false)
public class SysUser extends BaseEntity{

    @Column(name = "login_name", type = MySqlTypeConstant.VARCHAR, length = 64, isNull = false, isUnique = true)
    private String loginName;//登陆名

    @Column(name = "password", type = MySqlTypeConstant.VARCHAR, length = 64, isNull = false)
    private String password;//密码

    @Column(name = "salt", type = MySqlTypeConstant.VARCHAR, length = 64, isNull = false)
    private String salt;//盐

    @Column(name = "sex", type = MySqlTypeConstant.INT)
    private Integer sex;//性别

    @Column(name = "status", type = MySqlTypeConstant.INT, isNull = false)
    private Integer status;//状态

    @Column(name = "name", type = MySqlTypeConstant.VARCHAR, length = 64)
    private String name;//真实姓名

    @Column(name = "nick_name", type = MySqlTypeConstant.VARCHAR, length = 64)
    private String nickName;//昵称

    @Column(name = "phone", type = MySqlTypeConstant.VARCHAR, length = 64)
    private String phone;//手机号

    @Column(name = "email", type = MySqlTypeConstant.VARCHAR, length = 64)
    private String email;//邮箱

    @JsonFormat(pattern = DateUtils.SHORT_TIME_FORMAT, timezone = "GMT+8")
    @Column(name = "birthday", type = MySqlTypeConstant.DATETIME)
    private Date birthday;//生日

    @Column(name = "headimg_url", type = MySqlTypeConstant.VARCHAR, length = 255)
    private String headimgUrl;//用户头像

    @Column(name = "role_id", type = MySqlTypeConstant.BIGINT)
    private Long roleId;//角色id

}

3、创建用户信息controller类(SysUserController.java)

package com.jeff.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jeff.entity.SysUser;
import com.jeff.entity.request.PageEntity;
import com.jeff.enums.ResponseCodes;
import com.jeff.service.SysUserService;
import com.jeff.utils.Constant;
import com.jeff.utils.ResultsUtils;
import org.apache.commons.lang3.Validate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author Jeff
 * @description 用户管理
 * @date 2019/10/28
 */
@RestController
public class SysUserController {

    @Autowired
    private SysUserService sysUserService;

    /**
     * @description 获取用户列表(分页)
     * @author Jeff
     * @date 2019/10/30
     * @param page
     * @return java.lang.Object
     */
    @RequestMapping("getUserList")
    public Object getUserList1(PageEntity page) {
        PageHelper.startPage(page.getPage(), page.getRows());
        List<SysUser> list = sysUserService.getUserList();
        PageInfo<SysUser> pageInfo = new PageInfo<>(list);
        return ResultsUtils.success(pageInfo.getList(), pageInfo.getTotal());
    }

    /**
     * @description 新增用户
     * @author Jeff
     * @date 2019/10/30
     * @param user
     * @return java.lang.Object
     */
    @PostMapping("add")
    public Object add(SysUser user) {
        if (sysUserService.isExist(user)) {
            return ResultsUtils.error(ResponseCodes.PARAMTER_ERROR, "登录名重复,请重新输入");
        }
        sysUserService.save(user);
        System.out.println(user);
        return ResultsUtils.success();
    }

    /**
     * @description 修改用户
     * @author Jeff
     * @date 2019/10/30
     * @param user
     * @return java.lang.Object
     */
    @PostMapping("update")
    public Object update(SysUser user) {
        Validate.notNull(user.getId(), Constant.CHECK_MESSAGE, "用户id");
        if (sysUserService.isExist(user)) {
            return ResultsUtils.error(ResponseCodes.PARAMTER_ERROR, "登录名重复,请重新输入");
        }
        SysUser u=sysUserService.getUserById(user.getId());
        user.setCreateTime(u.getCreateTime());
        user.setCreateName(u.getCreateName());
        sysUserService.save(user);
        return ResultsUtils.success();
    }

    /**
     * @description 删除用户
     * @author Jeff
     * @date 2019/10/30
     * @param id
     * @return java.lang.Object
     */
    @RequestMapping("delete")
    public Object delete(Long id) {
        Validate.notNull(id, Constant.CHECK_MESSAGE, "用户id");
        sysUserService.delete(id);
        return ResultsUtils.success();
    }

    /**
     * @description 查看用户
     * @author Jeff
     * @date 2019/10/30
     * @param id
     * @return java.lang.Object
     */
    @RequestMapping("getUser")
    public Object getUser(Long id) {
        Validate.notNull(id, Constant.CHECK_MESSAGE, "用户id");
        return ResultsUtils.success(sysUserService.getUserById(id));
    }

}

4、创建用户信息service类(SysUserService.java)

package com.jeff.service;

import com.jeff.entity.SysUser;
import com.jeff.mapper.SysUserMapper;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author Jeff
 * @description 用户管理
 * @date 2019/10/28
 */
@Service
public class SysUserService {

    @Resource
    private SysUserMapper sysUserMapper;

    /**
     * @description 获取用户列表(分页)
     * @author Jeff
     * @date 2019/10/30
     * @return java.util.List<com.jeff.entity.SysUser>
     */
    public List<SysUser> getUserList() {

        return sysUserMapper.selectAll();
    }

    /**
     * @description 登录名是否已存在
     * @author Jeff
     * @date 2019/10/30
     * @param user
     * @return boolean
     */
    public boolean isExist(SysUser user) {
        Example example = new Example(SysUser.class);
        example.createCriteria().andEqualTo("loginName", user.getLoginName());
        if (user.getId() != null) {
            example.and().andNotEqualTo("id", user.getId());
        }
        return sysUserMapper.selectOneByExample(example) != null;
    }

    /**
     * @description 保存或更新,根据id是否为null进行逻辑判断更新还是插入
     * @author Jeff
     * @date 2019/10/30
     * @param user
     * @return void
     */
    public void save(SysUser user) {
        sysUserMapper.save(user);
    }

    /**
     * @description 按主键id删除数据
     * @author Jeff
     * @date 2019/10/30
     * @param id
     * @return void
     */
    public void delete(Long id) {
        sysUserMapper.deleteByPrimaryKey(id);
    }

    /**
     * @description 查看用户
     * @author Jeff
     * @date 2019/10/30
     * @param id
     * @return com.jeff.entity.SysUser
     */
    public SysUser getUserById(Long id) {
        return  sysUserMapper.selectByPrimaryKey(id);
    }
}

5、创建BaseMapper接口(BaseMapper.java)

package com.jeff.base;

import com.jeff.entity.BaseEntity;
import com.jeff.utils.PersistUtils;
import tk.mybatis.mapper.common.Mapper;

/**
 * @author Jeff
 * @description BaseMapper
 * @date 2019/10/30
 */
public interface BaseMapper<T extends BaseEntity> extends Mapper<T> {

    /**
     * @description 保存或更新,根据id是否为null进行逻辑判断更新还是插入
     * @author Jeff
     * @date 2019/10/30
     * @param t
     * @return boolean
     */
    default boolean save(T t) {
        return PersistUtils.save(this, t);
    }

}

注:Base接口不能放在mapper包下,不要被Mapper组件扫描配置给扫描到
6、创建用户信息mapper接口(SysUserMapper.java)

package com.jeff.mapper;

import com.jeff.base.BaseMapper;
import com.jeff.entity.SysUser;

/**
 * @author Jeff
 * @description 用户管理
 * @date 2019/10/28
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

}

7、创建全局配置文件(application.properties)

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.1.106:3306/jeff?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456

# MySql自动建表
#create,系统启动后,会将所有表删除,然后根据路径包中的实体类进行重新建表(会破坏原有数据)
#none,不做任何处理
#update,系统启动是会自动判断哪些表需要新建,哪些字段需要修改(不会破坏原有数据)
mybatis.table.auto=update
#建表的对象包路径
mybatis.model.pack=com.jeff.entity
mybatis.database.type=mysql

8、修改springboot启动类中 @MapperScan 注解的包路径为 import tk.mybatis.spring.annotation.MapperScan;

package com.jeff;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(basePackages = { "com.jeff.mapper" })
public class JfSpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(JfSpringbootApplication.class, args);
    }

}

源码地址:

https://gitee.com/jiefu813/jf-springboot/tree/jf_tkMybatis/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值