介绍

通用mapper,地址http://www.mybatis.tk/

优势

使用没mybatis,要编写大量的SQL到xml中,配置复杂,当数据库表结构改变时,xml、sql都要改,影响工作效率,通用mapper应运而生。
通用Mapper就是为了解决 单表 增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法.

快速开始

结合springboot maven依赖:

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

接下来我们只需要编写一个mapper接口即可:注意该接口不能被扫描到

package cn.tsxygfy.rabbit.utils;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * @ClassName RabbitMapper
 * @Description 自己的 Mapper <p>特别注意,该接口不能被扫描到,否则会出错</p>
 * @Author guofeiyang
 * @Date 2019/09/11 周三 17:05
 */
public interface RabbitMapper<T> extends Mapper<T>, MySqlMapper<T> {

}

实体类 MyUser.class

@Data
@Entity
@Table(name = "tb_user")
public class MyUser implements Serializable {

    private static final long serialVersionUID = -5278309117069376847L;

    /**
     * 账户状态
     */
    public static final String STATUS_VALID = "1";

    public static final String STATUS_LOCK = "0";

    /**
     * 性别
     */
    public static final String SEX_MALE = "0";

    public static final String SEX_FEMALE = "1";

    public static final String SEX_UNKNOWN = "2";

    /**
     * 用户ID
     */
    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 盐值
     */
    private String salt;

    /**
     * 状态 锁定0  可用1
     */
    @Column(length = 1)
    private String status;

    /**
     * 邮箱
     */
    @Column(length = 30)
    private String email;

    /**
     * 性别
     */
    @Column(length = 1)
    private String sex;

    /**
     * 创建时间
     */
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "create_time")
    private Date crateTime;

    /**
     * 修改时间
     */
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "modify_time")
    private Date modifyTime;

    /**
     * 上一次登录时间
     */
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "last_login_time")
    private Date lastLoginTime;

    /**
     * 上一次登录的ip
     */
    @Column(name = "last_login_ip", length = 15)
    private String lastLoginIp;

    /**
     * 上一次登录的地点
     */
    @Column(name = "last_login_location")
    private String lastLoginLocation;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 描述
     */
    private String description;

    /**
     * 用户 - 角色 多对一  @Transient注解可以忽略字段
     */
    @Transient
    private Role role;

    //getters and setters
}

编写mapper接口 UserMapper.class

package cn.tsxygfy.rabbit.mapper;

import cn.tsxygfy.rabbit.entity.MyUser;
import cn.tsxygfy.rabbit.utils.RabbitMapper;

/**
 * @InterfaceName UserMapper
 * @Description UserMapper接口
 * @Author 郭飞阳
 * @Date 2019/08/30 周五 14:11
 */
public interface UserMapper extends RabbitMapper<MyUser> {

}

启动类:


package cn.tsxygfy.rabbit;

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

/**
 * @ClassName RabbitApplication
 * @Description 启动类
 * @Date 2019/08/30 周五 14:08
 * @Author 郭飞阳
 */
@MapperScan(basePackages = {"cn.tsxygfy.rabbit.mapper"})
@SpringBootApplication
public class RabbitApplication {

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

}

我们只需要创建一个UserMapper接口来继承我们的RabbitMapper接口即可对user对应的数据表进行增删改查,只需要在service层直接注入UserMapper,即可食用。